如何隐藏单个标签栏按钮?
我搜索过但没找到任何东西,只有完整的栏。
我已经取得了一些进展但仍然遇到问题,此代码位于我的应用代理中,并带有标签栏的插座,我在标签栏中显示的第一个视图的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
答案 0 :(得分:3)
您需要使用setItems:animated:
来执行此操作。创建要保留在UITabBar上的按钮数组,并将其传递给此实例方法:
[myTabBar setItems:itemsToKeep animated:TRUE];
答案 1 :(得分:1)
在一个较旧的帖子Tab bar Controller raising NSInternalInconsistencyException中,我发现了一个警告,要直接使用tabbar的插座。我以前遇到过这个问题并得到错误:
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因是:'不允许直接修改由标签栏控制器管理的标签栏。'
但此错误仅适用于使用iOS 3.1.x的设备,而不适用于iOS 4.x.
为了找到一种方法在3.1.x的旧设备上运行我的程序,我首先删除了插座及其所有引用,即使在IB中也是如此。
因为我需要禁用一些标签,所以我没有找到另一种方法。所以我重新安装了插座及其所有参考。现在它和以前的代码一样,并且有效!
所以值得尝试做同样的事情。