2012-12-01 49 views
1

我发现此代码here,我认为它会完成这项工作。在uitabbar上禁用/隐藏uitabbaritem

`/* suppose we have a UITabBar *myBar, and an int index idx */ 
NSMutableArray modifyMe = [[myBar items] mutableCopy]; 
[modifyMe removeObjectAtIndex:idx]; 
NSArray *newItems = [[NSArray alloc] initWithArray:modifyMe]; 
[myBar setItems:newItems animated:true];` 

问题是,我应该在哪里写这段代码才能工作?
我试着把它放在UITabBarControllerviewDidLoad,但它没有奏效。

回答

1

如果您要修改UITabbarController中的tabbar项目,则不能使用setItems:animated:。从文档:

在iOS 3.0和更高版本中,您不应尝试使用此类的方法和属性来修改与选项卡栏控制器对象关联的选项卡栏。以这种方式修改标签栏会导致抛出异常。相反,对标签栏或其项目的任何修改必须通过标签栏控制器界面进行。

相反,换出你的UITabbarControllerviewControllers属性,删除对应于您要删除的项目的TabBar的UIViewController。例如,如果你想删除第二项的TabBar:

NSMutableArray *newViewControllers = [NSMutableArray arrayWithArray:self.viewControllers]; 
[newViewControllers removeObjectAtIndex:1]; 
[self setViewControllers:newViewControllers]; 
+0

感谢伙计,那工作:) 也感谢你做的很好的分析, 我是新来的可可联系,我真的很感激。 – ozmax

+0

为记录,我把你的代码放在'viewDidLoad'中。 – ozmax