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
}
I would really appreciate help, thanks!
The iOS 10.0 API Diffs shows that the
UIViewController.preferredStatusBarStyle() -> UIStatusBarStyle
method has been removed and that theUIViewController.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 forpreferredStatusBarStyle
. You will discover thatpreferredStatusBarStyle
now has the following declaration:Therefore, the following code snippet shows how to override
preferredStatusBarStyle
with Xcode 8 / Swift 3:Or, in a much shorter and preferred style:
In iOS 10,
preferredStatusBarStyle
is a property, not a method. So instead of overriding it with afunc
declaration as you've done, you override the getter with avar
declaration: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.