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

时间:2010-11-16 14:42:36

标签: iphone objective-c xcode

如何隐藏单个标签栏按钮?

我搜索过但没找到任何东西,只有完整的栏。

我已经取得了一些进展但仍然遇到问题,此代码位于我的应用代理中,并带有标签栏的插座,我在标签栏中显示的第一个视图的viewDidLoad内调用它。 / p>

-(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 个答案:

答案 0 :(得分:3)

您需要使用setItems:animated:来执行此操作。创建要保留在UITabBar上的按钮数组,并将其传递给此实例方法:

[myTabBar setItems:itemsToKeep animated:TRUE];

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

答案 1 :(得分:1)

在一个较旧的帖子Tab bar Controller raising NSInternalInconsistencyException中,我发现了一个警告,要直接使用tabbar的插座。我以前遇到过这个问题并得到错误:

由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因是:'不允许直接修改由标签栏控制器管理的标签栏。'

但此错误仅适用于使用iOS 3.1.x的设备,而不适用于iOS 4.x.

为了找到一种方法在3.1.x的旧设备上运行我的程序,我首先删除了插座及其所有引用,即使在IB中也是如此。

因为我需要禁用一些标签,所以我没有找到另一种方法。所以我重新安装了插座及其所有参考。现在它和以前的代码一样,并且有效!

所以值得尝试做同样的事情。