Ami*_*lra 46 swift3 xcode8 xcode8-beta4
所以我最近刚刚更新到Xcode 8,我刚刚得到以下代码的错误.
错误是该方法不会覆盖它的超类中的任何方法.
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.lightContent
}
Run Code Online (Sandbox Code Playgroud)
我非常感谢帮助,谢谢!
ric*_*ter 142
在iOS 10中,preferredStatusBarStyle是属性,而不是方法.因此,不要使用func声明覆盖它,而是使用声明覆盖getter var:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Run Code Online (Sandbox Code Playgroud)
这里的Swift编译器的错误信息可能会更好 - 因为它似乎知道你的覆盖func应该覆盖一个属性,它可能提供它作为修复它.我建议向Swift开源提交一个bug.
注意:在iOS 12中,您可能还需要UIViewControllerBasedStatusBarAppearance在Info.plist中设置(也称为"查看基于控制器的状态栏外观")标志.并检查视图控制器层次结构,因为容器视图控制器(如导航和拆分视图)可能不会从其子项传播此视图.
所述的iOS 10.0 API的diff表明UIViewController.preferredStatusBarStyle() -> UIStatusBarStyle方法已被移除并且该UIViewController.preferredStatusBarStyle属性已被加入.
以类似的方式,使用Xcode 8,您可以right-click在UIViewController代码中的任何Jump to Definition一个上选择然后执行搜索preferredStatusBarStyle.您会发现preferredStatusBarStyle现在有以下声明:
@available(iOS 7.0, *)
open var preferredStatusBarStyle: UIStatusBarStyle { get }
Run Code Online (Sandbox Code Playgroud)
因此,以下代码段显示了如何preferredStatusBarStyle使用Xcode 8/Swift 3 覆盖:
override var preferredStatusBarStyle: UIStatusBarStyle {
get {
return .lightContent
}
}
Run Code Online (Sandbox Code Playgroud)
或者,在更短和更首选的风格:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21149 次 |
| 最近记录: |