preferredStatusBarStyle removed in Swift 3?

后端 未结 2 1946
渐次进展
渐次进展 2020-12-09 14:16

so I recently just updated to Xcode 8 and I just got this error for the following code.

The error is that the method doesn\'t override any method from it\'s supe

相关标签:
2条回答
  • 2020-12-09 15:00

    In iOS 10, preferredStatusBarStyle is a property, not a method. So instead of overriding it with a func declaration as you've done, you override the getter with a var declaration:

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
    

    The Swift compiler's error message here could probably be better — since it seems to know your override func is supposed to cover a property, it could probably offer that as a fix-it. I'd recommend filing a bug to Swift open source.


    Note: in iOS 12, you may also need to set the UIViewControllerBasedStatusBarAppearance (aka "View controller-based status bar appearance") flag in your Info.plist. And check your view controller hierarchy, as container view controllers like navigation and split view might not propagate this from their children.

    0 讨论(0)
  • 2020-12-09 15:11

    The iOS 10.0 API Diffs shows that the UIViewController.preferredStatusBarStyle() -> UIStatusBarStyle method has been removed and that the UIViewController.preferredStatusBarStyle property has been added.


    In a similar way, with Xcode 8, you can right-click on any UIViewController in your code, select Jump to Definition and then perform a search for preferredStatusBarStyle. You will discover that preferredStatusBarStyle now has the following declaration:

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

    Therefore, the following code snippet shows how to override preferredStatusBarStyle with Xcode 8 / Swift 3:

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

    Or, in a much shorter and preferred style:

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
    
    0 讨论(0)
提交回复
热议问题