2012-12-01 48 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