在iOS 4.x或更低版本,viewDidAppear和viewWillAppear,viewDidDisappear和viewWillDisappear中,不会调用此类ViewController的委托方法。相同的方法适用于iOS 5.x。
为什么呢?这是iOS 4.x或更低版本中的错误。因为在iOS 5.x中,所有这些方法都以适当的方式和顺序被调用。
提前致谢, Mrunal
答案 0 :(得分:3)
对于IOS4.x,我使用UINavigationController委托方法,如下所示:
-(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if (SYSTEM_VERSION_LESS_THAN(@"5.0")) {
[activeView viewDidAppear:YES];
}
}
-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if (SYSTEM_VERSION_LESS_THAN(@"5.0")) {
[activeView viewWillAppear:YES];
}
}
我希望这有帮助!
答案 1 :(得分:2)
如果您的视图控制器是另一个视图控制器的子视图(即它是UIViewController中的UINavigationController,反之亦然等),则不会调用子视图的viewDidAppear,viewWillAppear等方法。解决方案是让父母调用它们:
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[child viewWillAppear:animated];
}
我知道这是通过iOS 4.3发生的。在iOS 5中,有一组专门用于处理这些案例的新方法:Implementing a Container View Controller