10

在 iOS 4.x 或更低版本中,viewDidAppear 和 viewWillAppear、viewDidDisappear 和 viewWillDisappear 等 ViewController 的委托方法不会被调用。相同的方法适用于 iOS 5.x。

为什么?这是 iOS 4.x 或更低版本中的错误。因为在 iOS 5.x 中,所有这些方法都以正确的方式和顺序调用。

提前致谢,

4

2 回答 2

3

对于 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];
    }
}

我希望这有帮助!

于 2012-12-28T17:15:09.463 回答
2

如果您的视图控制器是另一个视图控制器的子级(即它是 UIViewController 内的 UINavigationController,反之亦然等),则不会调用子级的 viewDidAppear、viewWillAppear 等方法。解决方案是让父母像这样调用它们:

-(void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated];
    [child viewWillAppear:animated];
}

我知道这是通过 iOS 4.3 发生的。在 iOS 5 中有一组专门用于处理这些情况的新方法:实现容器视图控制器

于 2012-02-08T18:57:38.147 回答