Search code examples
swift3xcode8xcode8-beta4

preferredStatusBarStyle removed in Swift 3?


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 superclasses.

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

enter image description here

I would really appreciate help, thanks!


Solution

  • 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.