在我的应用中,我有一个带有4个标签的TabBarController。每个选项卡都有一个嵌入式UINavigationController和它们各自的根视图。如果我在任何选项卡上并选择屏幕上的按钮以通过模式显示显示新的VC,则原始选项卡视图中的viewWillDisappear方法将被调用两次。如果我然后关闭模态视图以返回到根选项卡视图,则viewWillAppear方法也将被调用两次。仅在使用模态演示时才会出现这种情况。如果我只是将一个新的VC推送到UINavigationController上,那么根本就没有问题。
调用模态演示文稿的方法:
- (void)presentNewVC
{
NewVC *newVC = [self.storyboard instantiateViewControllerWithIdentifier:@"StringEditVC"];
NewNavigationVC *navVC = [[NavigationVC alloc] initWithRootViewController:newVC];
[self presentViewController:navVC animated:YES completion:nil];
}
正在调用它的VC恰好是一个UITableViewController。为了澄清,我将展示一个如何布局的例子。
UITabBarController - > 4个标签
每个标签:
UINavigationController - >的UITableViewController
UITableViewController在每个单元格上都有一个按钮,当按下该按钮时,执行上述方法以模态方式呈现新的VC。当我选择该动作时,模态视图会正确显示,但UITableViewController的viewWillDisappear会被触发两次。当我关闭要返回的模态视图时,UITableViewController的viewWillAppear也会被触发两次。如果我碰巧只是从UITableViewController中选择单元格本身它将正常工作并将新视图推送到UINavigationController而不调用任何两次。
编辑:
我刚刚检查了顶级标签栏控制器,当我最初打开应用程序时,它的viewWillAppear / Disappear方法被调用了两次。