iOS

2013-11-25, ios

viewDidLoadとviewDidAppear

Loadは一回だけ、Appearは表示されるたび、と覚えてしまうと、何かとややこしくなるので注意が必要です。Master - Detail型のテンプレートでそれぞれのビューに以下のようなコードを仕掛けて実験してみました。

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSLog(@"load %@",self.class);
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    NSLog(@"appear %@",self.class);
}

確かに、Masterの側は最初の一回だけloadが表示されて、あとは画面遷移して戻ってくる都度appearが呼ばれるという期待通りの動作なのですが、Detailの方は、毎回loadとappearがセットで呼ばれます。恐らくNavigationControllerの仕様で、親の側はキャッシュするけれど、子の側は毎回生成(ロード)しているのでしょう。

参考URL

この記事は役に立ちましたか?