如何在 ios 应用程序中正确弹出视图?

How to correctly pop views in ios app?

我有这个流程: UITableView foo -> detail UIView bar 包含另一个 UITableView foo_1 -> detail UIView bar_1

第一个 UITableView foo 包含一个事物列表并导致包含另一个 UITableView foo_1 的详细 UIView 栏,该栏导致另一个包含更多详细信息的 UIView bar_1。 现在,我在主应用程序选项卡上有几个按钮,我可以使用它更改视图。当我点击一个指向另一个视图的按钮,然后点击应该返回到我的 UITableView foo 的按钮时,我会看到 foo、bar 或 bar_1,这取决于我上次使用的是哪个视图我描述的流程,但每次我点击标签栏上的相应按钮时,我都想返回 foo

我认为正确的方法是:

-(void) viewWillDisappear:(BOOL)animated{
    [self.navigationController popToRootViewControllerAnimated:NO];
}

但我不确定在哪里使用此代码...我尝试将其放入 bar_1 但结果是 "nested pop animation can result in corrupted navigation bar Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted."。结果是导航栏变得疯狂并显示自己是空的...... 那么在类似情况下返回的正确方法是什么?

最直接的方法是为您的 UITabBarController 设置一个委托,并将您的代码放入 tabBarController:didSelectViewController: 方法中,每次切换活动选项卡时都会调用该方法。当然,你应该检查它是否是正确的视图控制器,不在每次标签切换时弹出到根目录。