この本を見ながら進めてる↓
前回⇒「【Swift奮闘記ep33】サンプルプロジェクトのソースコードを読み込む(AppDelegateクラスを読む)」
サンプルアプリの中身のひとつ「AppDelegateクラス」を見てみてどうだった?俺はうきうきワクワクしたぜ!
次は「ViewControllerクラス」の中身を見ていこう!
ViewControllerクラスを読む
早速ViewControllerクラスのソースコードを読んでみる。
ViewControllerクラスは、iOSアプリの起動後に初めて表示されるビューコントローラのクラスです。Main.storyboardには初めに表示されるシーンが作成されており、そのシーンのビューコントローラをインスタンス化するときのクラスに設定されています。
上記の説明だが、最初呼んだ時さっぱりわからなかった。
何度も繰り返し読み返してみると、同じことを2回言っているのではないか?と思えた。
つまりは「ViewControllerクラスはアプリ起動後の画面の最初のシーンのビューコントローラをインスタンス化するときのクラス」
もっと簡単に言うと(意味が変わってしまうかもしれんが)、「ViewControllerクラスは最初の画面を映すためのクラスだよ」みたいなことを言っていると理解。
ここでわからなくても、のちのちわかってくるでしょ。(プラス思考)
コードを一行ずつ見ていく
プロジェクトナビゲータの中からViewController.swiftというファイルをクリックすると、以下の様なコードが出てくる。
まずは1についてだが、AppDelegateクラスと同様でUIKitフレームワークをインポートしている。
実は「ViewControllerクラスはUIViewControllrを継承する必要があり、UIViewControllrを含んでいるUIKitフレームワークをインポートしなくちゃいけない」ってことなのだ。
次に2について。ViewControllerクラスの中に2つのメソッドが定義されている。
viewDidLoad()とdidReceiveMemoryWarning()
どちらもオーバーライド(上書き)されていて、メソッド内では「super.」を使ってスーパークラス(つまりUIViewControllr)のメソッドを呼び出している。
ライフサイクル
たしかどこかで出てきたのだが、「あるビューコントローラの生成→表示→破棄という流れ」の事をライフサイクルという。
ライフサイクルの節目節目で以下の様なメソッドが呼ばれる。
- loadView()→ビューコントローラが読み込まれる直前
- viewDidLoad()→ビューコントローラが読み込まれた時
- viewWillAppear(_:)→ビューコントローラが表示される直前
- viewDidAppear(_:)→ビューコントローラが表示された時
- viewWillDisappear(_:)→ビューコントローラが非表示になる直前
- viewDidDisapear(_:)→ビューコントローラが非表示になったとき
- didReceiveMemoryWarning()→メモリ不足が発生した時
今回、ViewControllerクラスではviewDidLoad()とdidReceiveMemoryWarning()がオーバーライドされたわけだ。
ビューコントローラのライフサイクルのメソッドをオーバーライドする際には必ずスーパークラスの同名のメソッドを呼ぶようにする事。じゃないとバグとなるそうだ。
最後に
サンプルアプリではViewControllerクラスに対してプログラミングを行っていく。
話を聞けば聞くほど、ViewControllerクラスは基本的なものであり、これを押さえておかないと始まらないくらい大事なものだとわかった。
次はシーンを編集していく。
続き⇒「【Swift奮闘記ep35】Storyboardでシーンを編集する(画面構成、シーンにビューを追加、ラベルとボタンに制約追加)」
コメント