迅捷的4.0:覆盖'prepare'必须与覆盖它的声明一样可用

guo*_*gyu 5 ios swift swift4 arkit xcode9

我试图将Apple的ARKit示例应用程序集成到我的应用程序中。由于ARKit只是一项附加功能,因此我需要支持较低版本的iOS。我在所有ARKit示例应用程序类中添加了@available(iOS 11.0,*)标记...除以下1个错误外,它几乎可以工作:“覆盖'prepare'必须与覆盖的声明一样可用”。您知道如何解决此问题吗?

Xcode错误图片

mal*_*ois 6

移动 :

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
     //...
}
Run Code Online (Sandbox Code Playgroud)

ViewController直接到文件。

它独立于UIPopoverPresentationControllerDelegate协议。


Mic*_*let 2

您正在重写一个名为 的方法prepare,但您将其设置为比您继承的超类中的可用性低。如果它位于public超类中,则当您覆盖它时,它需要位于超类publicopen。同样,如果它在低于 iOS 11 的 iOS 版本上可用,则您的重写实现必须在相同的 iOS 版本上可用。确保您已使用正确的访问关键字标记了重写的方法,并且它仍然@available作为您继承的超类存在于所有 iOS 版本上