2012-07-23 62 views
9

我有一個帶有4個視圖控制器的標籤欄控制器,並在導航控制器中有此標籤欄控制器。只有一個標籤欄控制器導航欄中的酒吧按鈕項目

我想顯示一個UIBarButtonItem僅用於標籤欄控制器的一個特定視圖控制器。

我試着用以下

if (tabBarController.selectedViewController == customTourViewController) 
    { 
     [tabBarController.navigationItem setRightBarButtonItem:done]; 
    } 

但按鈕不會顯示出來。

如果我把每個視圖控制器放在導航控制器中,那麼該按鈕只顯示該視圖,但我最終有2個導航欄。

有什麼辦法可以實現第一個解決方案嗎? 謝謝。

回答

21

在我個人視圖控制器對各個選項卡,我有在需要的按鈕,一個接着一個:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Done" 
                    style:UIBarButtonSystemItemDone target:nil action:nil]; 
    self.tabBarController.navigationItem.rightBarButtonItem = rightButton; 
} 

而且在不需要的按鈕,視圖控制器,我有:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    self.tabBarController.navigationItem.rightBarButtonItem = nil; 
} 

所以,如果它不爲你工作,我不知道,如果這是你的參考tabBarController沒有self名稱(如果我省略self我得到一個編譯錯誤)。這段代碼在哪裏,因爲如果它在你的tabBarController子類中,那麼你想要self.navigationItem.rightBarButtonItem,對吧?你有爲自己的變量名定義自己的伊娃嗎?或者你確定done被正確定義(即不是nil)?或者你確定這個代碼被調用(可能設置了一個斷點或插入一個NSLog並確保這個代碼已經到達)?

+0

謝謝!這有幫助。 – ratsimihah 2012-07-25 00:08:29

+0

它的工作原理:D謝謝 – 2017-04-06 14:27:53

+0

保存了一天的隊友!乾杯! – Marcelo 2018-02-23 11:46:13

3

或者,您可以在需要按鈕的相同視圖中實現viewWillDisappear。

-(void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated];   
    self.tabBarController.navigationItem.rightBarButtonItem = nil; 
} 
相關問題