2011-07-21 23 views
0

我有一個UITabBarController,並希望只在其中一個選項卡上看到按鈕,而不是其他選項。所以在我的方法,當按下標籤欄來處理,我將按鈕添加這樣的:在使用UITabBarController的特定視圖上的UIBarButtonItem

#pragma mark - UITabBarController delegate 
- (void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 
{ 
    // check for what type of class you are based on the tab pressed 
    ... 
      NSMutableArray *barItems = [[self.MainToolbar items] mutableCopy]; 
      UIBarButtonItem *sortBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Sort" style:UIBarButtonItemStyleBordered target:self action:@selector(SortButtonPressed:)]; 
      [barItems insertObject:sortBarButtonItem atIndex:0]; 
      [self.MainToolbar setItems:barItems]; 

現在我該怎樣在其他視圖時,刪除它時不打擾他們的按鈕在UIToolBar按下tabBarController他們IB中已經添加了這些內容。

+0

只要檢查視圖控制器是否是特定的視圖控制器。 – Legolas

回答

2

這與您添加按鈕的方式完全相同,只是簡單地將它設爲一個ivar,當您第一次檢測到特定的視圖控制器時,它只會被立即執行一次。

// in .h 
UIBarButtonItem *extraButton; 

// in .m 

-(void)tabBarController:(UITabBarController *)tabBarController 
didSelectViewController:(UIViewController *)viewController { 
    // if it is the view controller you want { 
     NSMutableArray *barItems = [[self.MainToolbar items] mutableCopy]; 
     if(!extraButton) { 
      extraButton = [[UIBarButtonItem alloc] 
          initWithTitle:@"Sort" 
            style:UIBarButtonItemStyleBordered 
            target:self 
            action:@selector(SortButtonPressed:)]; 
     } 
     [barItems insertObject:sortBarButtonItem atIndex:0]; 
     [self.MainToolbar setItems:barItems]; 
    // else 
     // just remove the button 
     NSMutableArray *barItems = [[self.MainToolbar items] mutableCopy]; 
     [barItems removeObjectAtIndex:0]; 
     [self.MainToolbar setItems:barItems]; 
} 

不要忘了稍後釋放按鈕,當你不需要它了,它應該沒問題。

相關問題