(这既是一个问题,也是一个答案,因为要找到真正的答案需要花费相当多的时间.)
症状:我的UIViewController中没有调用viewWillAppear
viewDidAppear
.
原因:在UIViewController
中嵌入UINavigationController
或UITabBarController
(我的 case )会以某种方式中断对这些方法的调用.
解决方案:在包含上述UINavigationController
/UITabBarController
的UIViewController
中手动调用它们.
例如(假设projectNavigationController
是你的UINavigationController
):
-(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [projectNavigationController viewWillAppear:animated]; } -(void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [projectNavigationController viewWillDisappear:animated]; } -(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [projectNavigationController viewDidAppear:animated]; } -(void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; [projectNavigationController viewDidDisappear:animated]; }
在我的例子中,我有一个内部UITabBarController
,我相应地调用了这些方法,所有问题都解决了.
(解决方案的归属:http://davidebenini.it/2009/01/03/viewwillappear-not-being-called-inside-a-uinavigationcontroller/)