我正在开发一个带有 UINavigatorController 的应用程序。我在第二个推送的 viewController 中使用方法 viewDidAppear 在外部服务器中查找信息。
嗯。虽然一开始在 iOS5 中运行良好,但我意识到 viewDidAppear 在 iOS4.3 中没有被调用,所以我将这段代码放在根目录中:
- (void)navigationController:(UINavigationController *)navigationController
didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
[viewController viewDidAppear:animated];
}
此后,该应用程序开始在 iOS4.3 中正常运行。然而,在 iOS5 中没有,因为它调用了两次 viewDidAppear(第一次调用的是 navigationController:didShowViewController:animated:
)
我应该怎么做才能只调用一次 viewDidAppear?
非常感谢
最佳答案
我看到的唯一真正的解决方案(或者更确切地说是 iOS 4.x 的解决方法)如果您在 viewWillAppear 调用中设置某种状态并检查它是否已在后续调用中设置,例如
-(void)viewWillAppear:(BOOL)animated {
if (!viewWillAppearCalled) {
viewWillAppearCalled = YES;
/* do stuff */
}
}
然后您可以安全地手动调用它以兼容 iOS 4.x。
对于 viewDidAppear、viewWillDisappear 和 viewDidDisappear 也可以做同样的事情。
关于ios - viewDidAppear 在 iOS5 中调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8646060/