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];
}

ちなみに呼ばれる順番は、

  1. willShowViewController
  2. viewWillAppear
  3. didShowViewController
  4. viewDidAppear

となります。

以上。