在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 }