そのため、最近Xcode 8に更新したばかりで、次のコードでこのエラーが発生しました。
エラーは、メソッドがそのスーパークラスのメソッドをオーバーライドしないことです。
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.lightContent
}
本当に感謝しています!
IOS 10では、 preferredStatusBarStyle
はプロパティであり、メソッドではありません。したがって、これまでのようにfunc
宣言でオーバーライドする代わりに、var
宣言でゲッターをオーバーライドします。
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
ここのSwiftコンパイラーのエラーメッセージはおそらくもっと良いかもしれません-オーバーライドfuncがプロパティをカバーするはずであることがわかっているように見えるので、おそらくそれを修正として提供することができます。 バグをSwiftオープンソース に提出します。
注:iOS 12では、Info.plistでUIViewControllerBasedStatusBarAppearance
(「コントローラーベースのステータスバーの表示」とも呼ばれる)フラグを設定する必要があります。また、NavigationやSplit ViewなどのコンテナView Controllerが子からこれを伝播しない可能性があるため、View Controllerの階層を確認してください。
iOS 10.0 API Diffs は、UIViewController.preferredStatusBarStyle() -> UIStatusBarStyle
メソッドがremovedであり、UIViewController.preferredStatusBarStyle
プロパティが追加されましたadded。
同様に、Xcode 8では次のことができます。 right-click コードのUIViewController
で、選択します Jump to Definition preferredStatusBarStyle
の検索を実行します。 preferredStatusBarStyle
に次の宣言があることがわかります。
@available(iOS 7.0, *)
open var preferredStatusBarStyle: UIStatusBarStyle { get }
したがって、次のコードスニペットは、Xcode 8で preferredStatusBarStyle
をオーバーライドする方法を示しています/ Swift 3:
override var preferredStatusBarStyle: UIStatusBarStyle {
get {
return .lightContent
}
}
または、はるかに短い優先スタイルで:
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}