woshidan's blog

そんなことよりコードにダイブ。

mixi iOS Training 第二回分メモ

書式がちっとも安定しませんが、今回は授業内容についてのみです。

書いていたメモが長過ぎたので、箇条書きにしてみました。

授業毎にサービス・アプリ&エンジニア紹介的なLTがあるのですが、今回のLTはデプロイゲートのhentekoさんでした。

今回の授業で扱ったのは資料の1.3と1.4です。

1.3 UIViewController1 UIViewController のカスタマイズ

  • iOSで画面の一単位を扱う時のクラスがUIViewController
  • UIViewControllerのカスタマイズはxib(きっちり書ける。再利用パーツ得意)かstoryboard(複数間連携得意)でやる
    • 講座では主にstoryboardでの操作方法についてやる
  • 試しに画面のレイアウトを作ってみる
    • UIViewControllerのサブクラスを作る
      • Cocoa Touchクラスを使うこと
    • Main.storyboardをクリックして、storyboardを表示。ViewControllerを右側からドラッグ&ドロップで追加
    • 追加したViewControllerのCustomClassをさっき作ったUIViewControllerのサブクラスに変更
    • IsInitialViewControllerのチェックを押して起動時画面に設定
    • ViewコントローラのViewを選択して、その上にButtonなどをドラッグ&ドロップして追加
      • ここまでで起動して確認してみる
  • パーツで使っている変数をプロパティとして取得してみる
    • 表示されているパーツのプロパティを変更したい場合は、UIViewControllerのインタフェースファイル(.h)に、以下のようにIBOutlet追加。
      • privateっぽくしたければ.mでもよい(gitterより)
@property (nonatomic, strong) IBOutlet UILabel *label;
  • storyboardに戻ってUIViewControllerの部分を右クリックすると、パネルが出て、Outletsの項にさっき追加したプロパティ名がある。そこの○と結びつけたいパーツをドラッグで結びつける

  • viewDidLoadイベントの中でそのプロパティをいじってみて確かめる

  • パーツのアクションを登録して動かしてみる
  • UIViewControllerの実装ファイル(.m)にIBActionのメソッドを追加
@implementation


- (IBAction)buttonTapped:(id)sender
{
    self.label.text = @"YES";
}

@end
  • storyboardに戻ってUIViewControllerの部分を右クリックすると、パネルが出て、ReceivedActionsの項にさっき追加したメソッド名がある。そこの○と結びつけたいパーツをドラッグで結びつける

    • ここまででシミュレータで確認する

1.4 UIViewController2 ModalViewController (storyboard)

  • UIViewControllerは他のViewControllerと連携して新しいViewControllerを表示するという役割がある
    • 連携方法は、Modal, Navigation Controller, TabBarControllerなど
    • 講義で扱ったのはModal
  • ModalViewController(子)とModalViewControllerを生成して表示するUIViewController(親)は親子関係にある。
    • UIViewControllerは、property:presentedViewControllerに表示対象のModalViewControllerへの参照を持つ
    • ModalViewControllerはproperty:presentingViewControllerに親のUIViewControllerへの(弱)参照を持つ(非推奨なので使わない?)
  • ModalViewControllerを削除する責任を持つのは親のUIViewController
    • ModalViewControllerを削除するときの実装周りは、delegate(派遣団員)、UIViewControllerをdelegation(派遣団)とするDelegateパターンが利用されている
  • 画面遷移にはsotryboardの場合segueを利用して設定する
    • segueを利用すると、Buttonをクリックして、遷移先のViewControllerまでドラッグするくらいの手間で基本的な画面遷移ができる
    • Stroryboard Segue Identifierあたりを利用して、任意のアクションに応じて遷移するように書くこともできる
  • 画面を閉じる時の処理の実装手順の概要