UIViewController - shirai/SwiftLearning GitHub Wiki

ViewController

ライフサイクル

目標

  • ViewControllerのライフサイクルが説明できる

わかったこと

  1. Viewの初期化(UIView *view = [[UIView alloc] init];)を行う(Storyboardやxibなど、InterfaceBuilderを利用している場合はこのメソッドを呼び出してはならない。) - (void)loadView;

  2. 画面がロードされた後に呼ばれる -(void)viewDidLoad

  3. 画面が表示される直前に呼ばれる -(void)viewWillAppear

  4. 画面が表示された直後に呼ばれる(既に画面に描画された後に呼ばれるので、ここでViewの生成などはできない) -(void)viewDidAppear

  5. 画面が消える(viewが破棄される)直前に呼ばれる -(void)viewWillDisappear

  6. 画面が消えた(スクリーン上からViewControllerが表示されなくなった時)に呼ばれる -(void)viewDidDisappear

  • 一つの画面のどのタイミングで何を行うかを以上のメソッドで管理している。

わからなかったこと

  • viewDidAppearの必要性

次にやること

  • 実装する際、このタイミングを意識し実装する(無闇にviewDidLoadを使わない)

ViewController間の値の受け渡し

目標

  • 画面間を遷移する際に任意の値を受け渡しする事ができる

わかったこと

  1. IB上でidentifierを設定する(to遷移先クラス名と自分の中で命名規約を持っている)

  2. 遷移先クラスの.hファイルに、受け取りたい値を定義しておく

  3. 遷移元のクラスの.mファイルで、遷移先クラスの.hファイルをimportする @interface StoreTableViewController : UITableViewController

     /*! @abstract 地域エンティティ */
     @property (strong,nonatomic) LargeAreaEntity *largeAreaEntity;
    
     @end
    
  4. 遷移元クラスで、identifierを指定し、遷移先クラスのインスタンスを生成する(今回はStoreTableViewControllerに遷移する) StoreTableViewController *storeTableViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"toStoreTableViewController"];

  5. 遷移先の.hファイルで定義されている値に任意の値を代入する storeTableViewController.largeAreaEntity = self.largeAreaEntity;

  6. 画面を遷移する [self.navigationController pushViewController:storeTableViewController animated:YES];

わからなかったこと

  • 永続化の方法を使った値渡し(CoreDataについては、CoreDataに記載)

次にやること

  • 永続化を使った値渡しのやり方を覚える

StoryBoard,Xibからの参照

目標

  • StoryBoard上及びXibで作成したパーツの参照をViewControllerから行うことが出来る

わかったこと

  1. IB上でidentifierを設定する(to遷移先クラス名と自分の中で命名規約を持っている)

  2. 遷移先クラスの.hファイルに、受け取りたい値を定義しておく

  3. 遷移元のクラスの.mファイルで、遷移先クラスの.hファイルをimportする @interface StoreTableViewController : UITableViewController

     /*! @abstract 地域エンティティ */
     @property (strong,nonatomic) LargeAreaEntity *largeAreaEntity;
    
     @end
    
  4. 遷移元クラスで、identifierを指定し、遷移先クラスのインスタンスを生成する(今回はStoreTableViewControllerに遷移する) StoreTableViewController *storeTableViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"toStoreTableViewController"];

  5. 遷移先の.hファイルで定義されている値に任意の値を代入する storeTableViewController.largeAreaEntity = self.largeAreaEntity;

  6. 画面を遷移する [self.navigationController pushViewController:largeAreaTableView animated:YES];

わからなかったこと

  • 永続化の方法を使った値渡し(CoreDataについては、CoreDataに記載)

次にやること

  • 永続化を使った値渡しのやり方を覚える