如何让所有导航控制器在标签栏中扎根?

Posted

技术标签:

【中文标题】如何让所有导航控制器在标签栏中扎根?【英文标题】:How to get all navigation controllers to root in tab bar? 【发布时间】:2011-06-23 06:29:00 【问题描述】:

我有一个应用程序,它在标签栏控制器中有三个标签。每个标签栏项目都有一个导航控制器,第一个标签栏项目上有一个注销按钮。现在,如果我导航到不同的导航控制器并注销,那么所有导航控制器对新用户保持相同的状态。我希望所有导航控制器在用户注销时都能进入根目录。

【问题讨论】:

【参考方案1】:

试试这个:

for (UINavigationController *navController in myViewController.tabBarController.viewControllers) 
    [navController popToRootViewControllerAnimated:NO];

【讨论】:

把这段代码放在哪里我已经用代码对导航控制器做了任何事情。我直接从 xib 使用它 任何地方,可能在您的注销按钮操作中,其中“myViewController”将是self【参考方案2】:

我认为您的问题可以通过编写注销方法来解决,该方法会弹出所有添加到根控制器的视图控制器。当用户点击注销按钮时,所有视图控制器都应该弹出,如果需要调用所有三个视图控制器中的操作。

希望它会起作用..

【讨论】:

【参考方案3】:

jtbandes,您的回答非常有效,但是如果我只需要为一个选项卡推送根视图控制器怎么办?我不想让其他标签成为修饰符,我只需要推送一个标签的根视图控制器。

【讨论】:

备案:刚刚回答了我自己的问题。答案是:UINavigationController *navig = [self.tabBarController.viewControllers objectAtIndex:3]; --> 将“3”替换为您要刷新的选项卡的索引。

以上是关于如何让所有导航控制器在标签栏中扎根?的主要内容,如果未能解决你的问题,请参考以下文章

标签栏导航栏中的后退按钮

标签栏 UIViewController 中导航栏中的按钮未显示

Swift 导航控制器嵌入在带有 segue 的选项卡栏中

在弹出窗口的标签栏中取消导航控制器中的 UITableView 搜索后,UINavigationBar 无响应

在导航到另一个视图控制器之前切换标签栏

如何在更多视图控制器的导航栏中设置图像并将更多标签的颜色从白色更改为绿色..?