在Swift 3中删除preferredStatusBarStyle?

所以我最近刚刚更新到Xcode 8,我只是得到这个错误的下面的代码。

错误是该方法不会覆盖它的超类中的任何方法。

override func preferredStatusBarStyle() -> UIStatusBarStyle { return UIStatusBarStyle.lightContent } 

在这里输入图像说明

我真的很感激帮助,谢谢!

在iOS 10中, preferredStatusBarStyle是一个属性,而不是一个方法。 因此,不要像你所做的那样用func声明覆盖它,而是用var声明覆盖getter:

 override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent } 

这里的Swift编译器的错误信息可能会更好 – 因为它似乎知道你的覆盖函数应该覆盖一个属性,它可能提供了一个修复它。 我build议向Swift开放源码提交一个bug 。

iOS 10.0 API Diffs显示已经删除UIViewController.preferredStatusBarStyle() -> UIStatusBarStyle方法,并添加UIViewController.preferredStatusBarStyle属性。


以类似的方式,使用Xcode 8,您可以右键单击代码中的任何UIViewController ,selectJump to Definition ,然后searchpreferredStatusBarStyle 。 您将发现preferredStatusBarStyle现在具有以下声明:

 @available(iOS 7.0, *) open var preferredStatusBarStyle: UIStatusBarStyle { get } 

因此,下面的代码片段显示了如何用Xcode 8 / Swift 3重写preferredStatusBarStyle

 override var preferredStatusBarStyle: UIStatusBarStyle { get { return .lightContent } } 

或者,以更短和更喜欢的风格:

 override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }