【问题标题】:Push another view controller into a UITabBarController view将另一个视图控制器推送到 UITabBarController 视图中
【发布时间】:2011-09-09 14:44:51
【问题描述】:

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

self.tabBarController.selectedViewController = self.otherViewController;

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

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

【问题讨论】:

    标签: objective-c ios uitabbarcontroller


    【解决方案1】:

    您想用另一个视图控制器替换标签栏中的视图控制器吗? 如果是这样,您必须通过设置一个新属性来编辑标签栏中的 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 不存在,除非它是一个 NSMUTABLEArray
    • 那是 wỏk,但是标签栏的图标不见了,当我触摸另一个标签并返回时,我认为在更改视图时它是“滞后”
    【解决方案2】:

    您不能只在此选项卡上使用导航控制器或类似的控制器吗?

    无论如何这应该工作:

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

    【讨论】:

      猜你喜欢
      • 2016-10-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-28
      • 1970-01-01
      • 2013-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多