代码之家  ›  专栏  ›  技术社区  ›  Jules

iPhone,如何隐藏标签栏按钮?

  •  0
  • Jules  · 技术社区  · 14 年前

    如何隐藏单个选项卡栏按钮?

    我搜遍了,什么也没找到,只有满酒吧。

    我已经取得了一些进展,但仍有问题,这段代码在我的应用程序委托中,有一个指向选项卡栏的出口,我在其中调用它 viewDidLoad 选项卡栏中显示的第一个视图的。

    -(void)hideTabButton {  
    NSMutableArray *aItems = [[rootTabBar items] mutableCopy];
    for (UITabBarItem *tabButton in aItems) {
        if ([tabButton.title isEqualToString:@"First"]) {           
            [aItems removeObject:tabButton];
            break;
        }
    }
    [rootTabBar setItems:aItems animated:YES];
    [aItems release];   
    }
    

    但这给了我一个错误,这似乎是可能的,否则为什么 setItems .

     Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
    reason: 'Directly modifying a tab bar managed by a tab bar controller is 
    not allowed.'
    Call stack at first throw:
    

    这是我的全部密码,我想我快到了。 My Sample project

    2 回复  |  直到 14 年前
        1
  •  3
  •   Evan Mulawski    14 年前

    你需要使用 setItems:animated: 做这个。创建要保留在uitabar上的按钮数组,并将其传递给此实例方法:

    [myTabBar setItems:itemsToKeep animated:TRUE];
    

    参考: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITabBar_Class/Reference/Reference.html

        2
  •  1
  •   Community CDub    7 年前

    旧的思路 Tab bar Controller raising NSInternalInconsistencyException 我发现了一个警告,要用一个出口去可怕的标签栏。我以前遇到过这个问题,但后来出错了:

    由于未捕获的异常“nsInternalConsistencyException”而终止应用程序,原因:“不允许直接修改由选项卡栏控制器管理的选项卡栏。”

    但是这个错误只出现在iOS 3.1.x的设备上,而不是iOS 4.x。

    为了找到在3.1.x的旧设备上运行程序的方法,我首先删除了插座和对它的所有引用,即使是在IB中。

    因为我需要禁用一些选项卡,所以我没有找到其他方法。所以我重新安装了插座和所有的参考资料。现在它和以前的代码是一样的,而且工作正常!

    所以值得一试。