所以我最近刚刚更新到 Xcode 8,我刚刚收到以下代码的这个错误。
错误是该方法没有覆盖其超类中的任何方法。
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.lightContent
}
我真的很感激帮助,谢谢!
所以我最近刚刚更新到 Xcode 8,我刚刚收到以下代码的这个错误。
错误是该方法没有覆盖其超类中的任何方法。
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.lightContent
}
我真的很感激帮助,谢谢!
在 iOS 10 中,preferredStatusBarStyle
是属性,而不是方法。因此,不要func
像你所做的那样用声明覆盖它,而是用声明覆盖 getter var
:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
这里的 Swift 编译器的错误消息可能会更好——因为它似乎知道你的 override func 应该覆盖一个属性,它可能会提供它作为修复它。我建议向 Swift open source 提交一个错误。
注意:在 iOS 12 中,您可能还需要UIViewControllerBasedStatusBarAppearance
在 Info.plist 中设置(又名“基于控制器的状态栏外观”)标志。并检查您的视图控制器层次结构,因为诸如导航和拆分视图之类的容器视图控制器可能不会从其子级传播。
iOS 10.0 API Diffs显示该方法UIViewController.preferredStatusBarStyle() -> UIStatusBarStyle
已被删除并且该UIViewController.preferredStatusBarStyle
属性已被添加。
以类似的方式,使用 Xcode 8,您可以right-click在代码中的任何地方UIViewController
,选择Jump to Definition然后执行搜索preferredStatusBarStyle
. 您会发现preferredStatusBarStyle
现在有以下声明:
@available(iOS 7.0, *)
open var preferredStatusBarStyle: UIStatusBarStyle { get }
因此,以下代码片段展示了如何preferredStatusBarStyle
使用 Xcode 8 / Swift 3 覆盖:
override var preferredStatusBarStyle: UIStatusBarStyle {
get {
return .lightContent
}
}
或者,以更短和更喜欢的风格:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}