在 iOS 4.x 或更低版本中,viewDidAppear 和 viewWillAppear、viewDidDisappear 和 viewWillDisappear 等 ViewController 的委托方法不会被调用。相同的方法适用于 iOS 5.x。
为什么?这是 iOS 4.x 或更低版本中的错误。因为在 iOS 5.x 中,所有这些方法都以正确的方式和顺序调用。
提前致谢,
在 iOS 4.x 或更低版本中,viewDidAppear 和 viewWillAppear、viewDidDisappear 和 viewWillDisappear 等 ViewController 的委托方法不会被调用。相同的方法适用于 iOS 5.x。
为什么?这是 iOS 4.x 或更低版本中的错误。因为在 iOS 5.x 中,所有这些方法都以正确的方式和顺序调用。
提前致谢,
对于 IOS4.xi,使用 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];
}
}
我希望这有帮助!
如果您的视图控制器是另一个视图控制器的子级(即它是 UIViewController 内的 UINavigationController,反之亦然等),则不会调用子级的 viewDidAppear、viewWillAppear 等方法。解决方案是让父母像这样调用它们:
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[child viewWillAppear:animated];
}
我知道这是通过 iOS 4.3 发生的。在 iOS 5 中有一组专门用于处理这些情况的新方法:实现容器视图控制器