Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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!

like image 911
Amit Kalra Avatar asked Aug 09 '16 23:08

Amit Kalra


People also ask

How do you override Preferredstatusbarstyle?

It is possible to override this on the UINavigationBar by setting overrideUserInterfaceStyle but this will result in the back list menu (from long press on back button) also having a dark mode style appearance.

How do you make a status bar light in Swift?

Open you Info. Add View controller-based status bar appearance key ( UIViewControllerBasedStatusBarAppearance ) and set value to No ( false ). Add Status bar style key ( UIStatusBarStyle ) and set value to Light Content ( UIStatusBarStyleLightContent ).


1 Answers

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.

like image 78
rickster Avatar answered Sep 24 '22 21:09

rickster