2017-09-27 47 views
1

我想蘋果ARKit示例應用程序集成到我的應用程序。由於ARKit只是一個附加功能,所以我需要支持較低版本的iOS。我爲所有的ARKit示例應用程序類添加了@available(iOS 11.0,*)標記......除了這1個錯誤之外,它幾乎可用:「重寫'prepare'必須與覆蓋的聲明一樣可用。任何想法如何解決這個問題? enter image description hereSWIFT 4.0:覆蓋「準備」必須是可用的聲明將覆蓋

+0

您是否找到了解決方案? –

回答

0

你覆蓋了一個名爲prepare方法,但你將其設定爲可少比它在你繼承的超類。如果是public超類,它需要publicopen,當你將其覆蓋。同樣,如果是用於iOS版本的iOS相比低11,你重寫的實現必須有可用的相同的IOS版本。確保你已經使用適當的訪問關鍵字標記了你的覆蓋方法,並且它仍然是所有iOS版本中的@available作爲你繼承的超類

+0

但是超類是UIViewController,我無法更改Apple的UIKit – guocongyu

+0

爲什麼重寫viewDidLoad()等工作,只有這種方法不起作用 – guocongyu

+0

這不是UIKit的問題。是'SegueIdentifier'或'VirtualObjectSelectionViewController'標記爲'@available(iOS版11,*)'?如果是這樣,請嘗試在「if#available」塊中使用這些內容 –

0

對我來說是什麼工作是添加上面的@available屬性方法如下:

@available(iOS 11.3, *) 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     //... 
    }