UINavigationController配下のviewControllerのviewWillAppear/viewDidAppearが呼ばれない件
ハマったので、メモ。
UINavigationControllerのrootViewControllerにUITableViewControllerを設定した状況で、UITableViewController側のviewWillAppear/viewDidAppearが実行されなかった。
ググったところ、以下を参考に何とか解決。
http://discussions.apple.com/thread.jspa?threadID=1549270
UINavigationControllerを管理するController(もしくはAppDelegate)にて、
UINavigationControllerDelegateプロトコルを実装
navigationController.delegate = self (もしくはIBでoutlet接続)
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { [viewController viewWillAppear:animated]; } - (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated { [viewController viewDidAppear:animated]; }
ちなみに呼ばれる順番は、
- willShowViewController
- viewWillAppear
- didShowViewController
- viewDidAppear
となります。
以上。