Iphone 更改选项卡栏控制器中选项卡的viewcontroller

Iphone 更改选项卡栏控制器中选项卡的viewcontroller,iphone,objective-c,cocoa-touch,ios4,Iphone,Objective C,Cocoa Touch,Ios4,我目前正在开发一个应用程序,它有一个TabBarController,每个选项卡都包含一个导航控制器。这样,在每个选项卡上,我都可以通过将viewcontroller推到导航控制器来显示视图上所选行的详细信息。每个视图上方都有一个UINavigationItem。在这个导航项中,我放置了一个按钮 但是现在我想在单击UINavigationItem中的按钮时更改某个选项卡的viewcontroller,但是我要更改为的视图(控制器)必须与该选项卡的根视图控制器类似 因此,我不想在导航控制器上推送另

我目前正在开发一个应用程序,它有一个TabBarController,每个选项卡都包含一个导航控制器。这样,在每个选项卡上,我都可以通过将viewcontroller推到导航控制器来显示视图上所选行的详细信息。每个视图上方都有一个UINavigationItem。在这个导航项中,我放置了一个按钮

但是现在我想在单击UINavigationItem中的按钮时更改某个选项卡的viewcontroller,但是我要更改为的视图(控制器)必须与该选项卡的根视图控制器类似

因此,我不想在导航控制器上推送另一个视图,只需切换到该视图(在同一选项卡中),并将其作为根视图控制器

我找不到一个好方法来做到这一点,因为实际上视图是正确的。当我切换视图时,它们或者不解除锁定(这很好,因为我想将内存使用保持在最低限度)

解决这个问题的一种方法可能是,我在TabBar控制器中添加更多选项卡,并在单击按钮时切换到正确的选项卡,但这将是最后的选择


我不确定我是否正确地描述了这一点,但我想知道最好的方法是什么。我的首选是拥有3个ViewController并在它们之间切换。

希望我正确理解您的问题:您希望基本上“重置”导航控制器以拥有一个新的根

您可以通过告诉导航控制器要显示一组新的视图控制器来完成此操作:

[navigationController setViewControllers:[NSArray arrayWithObject:newViewController] 
                                animated:NO];

这将删除当前位于该导航控制器堆栈上的所有视图控制器,并将根视图重置为
newViewController

嗨,我相信如果您将NavigationController作为self.window.rootViewController,这是可行的。但是,我正在实现一个TabBarViewController和self.window.rootViewController=TabBarViewController。不管怎样,我仍然可以达到和原来的UITabBarController一样的效果。我们应该在哪里做呢。(ViewWillDisplay或tabbarController委托方法)