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

7

我使用UITabBarController来进行我的应用程序的导航。这很好用,但是在我的一个视图控制器中,我想将另一个视图控制器推入到选项卡视图中。 换句话说,我想用另一个视图控制器替换选定的视图控制器。 我使用以下代码实现:

self.tabBarController.selectedViewController = self.otherViewController;

我的TabBarController的viewControllers列表中不包含otherViewController。 这个方法在IOS 4.3上效果很好,但是IOS 5不支持。 有人知道IOS 5接受的解决方案吗?
2个回答

12

你想用另一个视图控制器替换选项卡中的该视图控制器吗? 如果是这样,你需要通过设置新的视图控制器来编辑选项卡中的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)。 - Aron K.
哦,是的,你说得对,我没有使用Xcode打字,所以我意识不到replaceObjectAtIndex:withObject只有在NSMUTABLEArray中才存在。 - Javier Soto
这个没问题,但是tabbar的图标丢失了,当我点击另一个选项卡并返回时,在切换视图时会出现“滞后”,我认为。 - user1561904

0

你不能在这个选项卡上仅仅使用导航控制器或类似的东西吗?

无论如何,这应该可以工作:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接