我目前正在开发一个具有TabBarController的应用程序,每个选项卡都包含一个导航控制器。这样在每个选项卡上,我可以通过将viewcontroller推送到导航控制器来显示在视图上选择的行的详细信息。每个视图上面都有一个UINavigationItem。在这个导航项中,我放了一个按钮。
但是现在我想在单击UINavigationItem中的按钮时更改某个选项卡的viewcontroller,但是我要更改的视图(控制器)必须像该选项卡的根视图控制器一样。
所以我不想在导航控制器上推送另一个视图,只是切换到该视图(在同一个选项卡中),并将其作为根视图控制器。
我找不到一个很好的方法来实现这一点,实际上让视图正常工作。当我切换视图时,它们要么不释放(这会很好,因为我想将内存使用量保持在最低限度)。
解决这个问题的一种方法可能是我向TabBar控制器添加了更多选项卡,并在单击按钮时切换到右侧选项卡,但这将是最后的选择。
我不确定我是否正确描述了这一点,但我想知道最好的方法是做什么。我的偏好是有3个viewcontrollers并在它们之间切换。
答案 0 :(得分:7)
希望我能正确理解您的问题:您希望基本上“重置”导航控制器以获得新根。
您可以通过告诉导航控制器您要显示一组新的视图控制器来执行此操作:
[navigationController setViewControllers:[NSArray arrayWithObject:newViewController]
animated:NO];
这将删除当前在导航控制器堆栈上的所有视图控制器,并将根视图重置为newViewController
。