2017-09-27 48 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?) { 
     //... 
    }