8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

swift viewDidLoad時に画面遷移したい。

Last updated at Posted at 2018-11-26

viewDidLoad時に画面遷移しようとして10分ぐらい困ってたので同じように困ってる方のための記録です。

viewDidLoadにそもそも画面遷移はできない。

viewDidLoadに画面遷移できない理由は「viewDidLoadとはまだviewを読みこむ処理」だから。
結論としてはviewDidAppearを使うことで画面表示時の画面遷移を行うことができる。

よくいろんな記事で以下のようなライフサイクルを見たことがあると思います。
llife.png
ふむふむ、なるほど。で、何故に画面遷移ができないの?って困った時にいろいろ調べていたら以下を見つけました。
 iOS開発におけるUIViewControllerのライフサイクルイベントまとめ
とても腑に落ちたのでまとめると、viewライフサイクルは、

①loadView
②viewDidLoad
③viewWillAppear
④viewWillLayoutSubviews
⑤viewDidLayoutSubviews
⑥viewDidAppear

⑦viewWillDisappear
⑧viewDidDisappear

大まかには以下のような意味になるので、

①Viewを読み込むよ
②Viewを読み込んだよ
③Viewを表示するよ
④View(SubViews)をうまい事配置するよ
⑤View(SubViews)をうまい事配置したよ
⑥Viewを表示したよ

⑦View消すよ
⑧View消したよ

⑥のviewDidAppearで初めて画面遷移等の処理を行うことが可能になる。
コードにすると以下のようになります。

viewDidLoad内に画面遷移を書き込んだ場合。
 override func viewDidLoad() {
        super.viewDidLoad()
        //ここに画面遷移処理を記述しても走らない。
    }

override func viewDidAppear(_ animated: Bool) {
         //ここに画面遷移処理を記述するときちんと走る。    
        }


自分なりにスッキリしました。viewDidLoad時にでも画面遷移の方法をご存知の方がいればコメントを下さい。

8
9
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
8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?