LoginSignup
14
19

More than 5 years have passed since last update.

Swift3.0でoverrideでエラーが出た時

Last updated at Posted at 2016-08-03

Xcode8betaにしてからエラーが増えた中で一つ解決に手間取ったものがあった。(日本語の記事が見つからなかったから

問題

UIViewControllerでステータスバーのスタイルを変えたいときなどは、

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

を使っていたと思うが、Xcode8betaを使ってプロジェクトを開くと

Method does not override any method from its superclass

エラーが出る。

理由

なぜならUIViewController内での定義が

public func preferredStatusBarStyle() -> UIStatusBarStyle

から

open var preferredStatusBarStyle: UIStatusBarStyle { get } 

に変わったから。

修正方法

Swift3.0からはこう書く。

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .default
}

他にも

他にも、
prefersStatusBarHidden
shouldAutorotate
supportedInterfaceOrientations
等で変わっている。

まとめ

何れにしても、funcをvarに書き換え、() ->を:に書き換えるだけなので、それがわかれば簡単。
エラーが出て定義を確認した時に

open var なんとか: なんとか { get }

だったら応用が利く。

コメント

今久しぶりにXcode8を使って、それがたまたまbeta4で気づいたことだったが、もしかしたら前からだったのかもしれない。

追記(8/16)

Xcode8_beta6でまた定義が変わったみたいです。それに合わせて編集しました。
publicからopenになりました。openが何か全くわかりません。アクセス修飾子っていうんですか?これ。
openについてはここ->http://qiita.com/hironytic/items/6cc68ca93b428ba9194e

参考サイト

14
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
19