在iOS 4.x或更低版本、viewDidAppear和viewWillAppear、viewDidDisappear和viewWillDisappear中,不会调用此类视图控制器的委托方法。同样的方法也适用于iOS 5.x。
为什么?这是iOS 4.x或更低版本中的错误吗?因为在iOS 5.x中,所有这些方法都是以正确的方式和顺序调用的。
提前谢谢你,先生
发布于 2012-12-28 17:15:09
对于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];
}
}
我希望这能帮到你!
发布于 2012-02-08 18:57:38
如果您的视图控制器是另一个视图控制器的子级(例如,它是UIViewController中的UINavigationController,反之亦然),则不会调用子视图控制器的viewDidAppear、viewWillAppear等方法。解决方案是让父级调用它们,如下所示:
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[child viewWillAppear:animated];
}
我知道这是通过iOS 4.3实现的。在iOS 5中,有一组专门用于处理这些情况的新方法:Implementing a Container View Controller
https://stackoverflow.com/questions/8089287
复制