症状:我的UIViewController中没有调用viewWillAppear、viewDidAppear方法。
原因:将UINavigationController或UITabBarController(在我这种情况下)嵌入到UIViewController中,会以某种方式干扰这些方法的调用。
解决方案:在包含上述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/)