Swift发送器用于覆盖prepare方法

时间:2017-09-15 18:54:56

标签: ios swift

我使用eBook iOS Development Essentials学习iOS开发,还有一个关于Master-Detail界面的部分。我应该在

中更改代码
override func prepare(for segue: UIStoryboardSegue, sender: AnyObject?)

方法。问题是我只有

override func prepare(for segue: UIStoryboardSegue, sender: Any?)

方法。手动将发件人更改为AnyObject不起作用 - 结果为:

Method does not override any method from its superclass

由于该方法没有按预期工作,我想知道它是否与发件人有关。

2 个答案:

答案 0 :(得分:2)

您应该覆盖此方法:

func prepare(for segue: UIStoryboardSegue, sender: Any?)

错误:

  

Method不会覆盖其超类

中的任何方法
发生

,因为UIViewController超类)没有override func prepare(for segue: UIStoryboardSegue, sender: AnyObject?)方法,因此无需覆盖。

方法prepare(for segue: UIStoryboardSegue, sender: AnyObject?)在Xcode 8 beta 6中更改为prepare(for segue: UIStoryboardSegue, sender: Any?)

答案 1 :(得分:0)

UIViewController prepare(for:sender:)方法的正确签名是

override func prepare(for segue: UIStoryboardSegue, sender: Any?)

如果您正在阅读一本显示

的书
override func prepare(for segue: UIStoryboardSegue, sender: AnyObject?)

这是错的。 (在Swift中,参数具有不同类型的函数被认为是不同的函数。看起来最近发送参数的类型已更改,因此您的教程代码可能有点过时。)

您只需在功能定义中将AnyOject?更改为Any?