Objective c 将另一个视图控制器推入UITabBarController视图

Objective c 将另一个视图控制器推入UITabBarController视图,objective-c,ios,uitabbarcontroller,Objective C,Ios,Uitabbarcontroller,对于我的应用程序中的导航,我使用的是UITabBarController。这很好,但在我的一个视图控制器中,我想将另一个视图控制器推入选项卡栏视图。 换句话说,我想用另一个替换选定的viewcontroller。 我使用以下代码执行此操作: self.tabBarController.selectedViewController = self.otherViewController; my TabBarController中的ViewController列表不包含otherViewContro

对于我的应用程序中的导航,我使用的是UITabBarController。这很好,但在我的一个视图控制器中,我想将另一个视图控制器推入选项卡栏视图。 换句话说,我想用另一个替换选定的viewcontroller。 我使用以下代码执行此操作:

self.tabBarController.selectedViewController = self.otherViewController;
my TabBarController中的ViewController列表不包含otherViewController。 这个技巧在IOS 4.3中运行良好,但IOS 5不喜欢它


有人知道IOS 5接受的解决方案吗?

您不能仅在该选项卡上使用导航控制器或类似设备

无论如何,这应该是可行的:

NSMutableArray *controllers = [NSMutableArray arrayWithArray:rootTabBarController.viewControllers];
[controllers replaceObjectAtIndex:rootTabBarController.selectedIndex withObject: newController];
rootTabBarController.viewControllers = controllers;

是否要用另一个视图控制器替换选项卡栏中的该视图控制器? 如果是这样,则必须在选项卡栏中通过设置新属性来编辑viewControllers属性。可能是这样的:

UIViewController *thisIsTheViewControllerIWantToSetNow;
int indexForViewControllerYouWantToReplace;

NSMutableArray *tabbarViewControllers = [self.tabbar.viewControllers mutableCopy];

[tabbarViewControllers replaceObjectAtIndex:indexForViewControllerYouWantToReplace withObject:thisIsTheViewControllerIWantToSetNow];

self.tabbar.viewControllers = tabbarViewControllers;

[tabbarViewControllers release];

这是可行的,但是你必须使用一个NSMutableArray(你的viewController数组的一个mutableCopy)哦,是的,你是对的,我在没有Xcode的情况下键入了它,以使我意识到replaceObjectAtIndex:withObject不存在,除非它是NSMUTABLEArrayThat's wỏk、 但tabbar的图标不见了,当我触摸另一个选项卡并向后触摸时,当更改视图时,我认为是“滞后”