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

时间:2011-09-09 14:44:51

标签: objective-c ios uitabbarcontroller

对于我的应用程序中的导航,我正在使用UITabBarController。这工作正常,但在我的一个viewcontrollers中,我想将另一个视图控制器推入tabbar视图。 换句话说,我想用另一个替换所选的viewcontroller。 我正在使用以下代码执行此操作:

self.tabBarController.selectedViewController = self.otherViewController;

我的TabBarController中的viewControllers列表不包含otherViewController。 这个技巧在IOS 4.3中运行良好,但IOS 5不喜欢它。

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

2 个答案:

答案 0 :(得分:12)

您想要使用另一个视图控制器来替换标签栏中的视图控制器吗? 如果是这样,您必须通过设置一个新窗口来编辑tabbar中的viewControllers属性。它会是这样的:

UIViewController *thisIsTheViewControllerIWantToSetNow;
int indexForViewControllerYouWantToReplace;

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

[tabbarViewControllers replaceObjectAtIndex:indexForViewControllerYouWantToReplace withObject:thisIsTheViewControllerIWantToSetNow];

self.tabbar.viewControllers = tabbarViewControllers;

[tabbarViewControllers release];

答案 1 :(得分:0)

您不能在此标签上使用导航控制器或类似设备吗?

无论如何这应该有效:

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