【问题标题】:preferredStatusBarStyle removed in Swift 3?在 Swift 3 中删除了preferredStatusBarStyle?
【发布时间】:2016-08-09 23:53:59
【问题描述】:

所以我最近刚刚更新到 Xcode 8,但我刚刚收到以下代码的此错误。

错误在于该方法没有覆盖其超类中的任何方法。

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

非常感谢您的帮助,谢谢!

【问题讨论】:

    标签: swift3 xcode8 xcode8-beta4


    【解决方案1】:

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

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
    

    这里的 Swift 编译器的错误消息可能会更好——因为它似乎知道你的覆盖函数应该覆盖一个属性,它可能会提供它作为修复它。我推荐filing a bug to Swift open source


    注意:在 iOS 12 中,您可能还需要在 Info.plist 中设置 UIViewControllerBasedStatusBarAppearance(又名“基于控制器的状态栏外观”)标志。并检查您的视图控制器层次结构,因为像导航和拆分视图这样的容器视图控制器可能不会从它们的子级传播。

    【讨论】:

    • @erkanyildiz 是与否:可能没有人喜欢旧代码在新版本出现时停止工作的语言;但另一方面,大多数 Swift 3 更改确实有意义。
    • 这似乎不适用于 iOS 12 和 Swift 4。有什么想法吗?我没有收到任何错误,但状态栏也没有改变。
    • 这里与@icekomo 有同样的问题。此代码对我的状态栏没有任何作用
    • 这段代码在 iOS 12 中仍然会被调用——所以你的 Swift 没有问题——但是底层特性的行为可能已经改变了。需要进一步调查。
    • 你还需要:self.setNeedsStatusBarAppearanceUpdate()
    【解决方案2】:

    iOS 10.0 API Diffs 表明 UIViewController.preferredStatusBarStyle() -> UIStatusBarStyle 方法已删除UIViewController.preferredStatusBarStyle 属性已添加


    以类似的方式,使用 Xcode 8,您可以右键单击代码中的任何UIViewController,选择跳转到定义,然后执行搜索preferredStatusBarStyle。你会发现preferredStatusBarStyle 现在有如下声明:

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

    因此,以下代码 sn-p 显示了如何使用 Xcode 8 / Swift 3 覆盖 preferredStatusBarStyle

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

    或者,采用更短且更受欢迎的样式:

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
    

    【讨论】:

    • 我收到以下错误“UIStatusBarStyle”不可用。有任何想法吗? (tvOS)
    • 非常有帮助的解释。我可以用在其他东西上。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多