2011-05-13 90 views
4

我加入了信息按鈕,使用下面的代碼的導航欄:如何隱藏UInavigationBar右鍵項目?

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight]; 
    [infoButton addTarget:self action:@selector(showImage:) 
     forControlEvents:UIControlEventTouchUpInside]; 
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton]; 

現在我想在基於某些條件的代碼的某些部分隱藏這個按鈕。但我沒有找到導航欄中的右欄按鈕項目的任何隱藏屬性?

回答

10

要製作隱藏圖片,請嘗試將nil分配到您的rightBarButtonItem,如下所示。

self.navigationItem.rightBarButtonItem = nil ; 
+2

如果你以後需要使用它,你可以將它保存爲ivar。 – 2011-05-13 17:47:10

+0

@Grady Player:正確的,你可以將它作爲類變量供以後使用, – Jhaliya 2011-05-13 17:49:31

+0

一個類變量會有錯誤的目標不是嗎? – 2011-05-13 17:50:53

10

最好的選擇是使用buttonItem.enabled = NO來表示目前功能不可用。在大多數情況下,這應該是正確的行爲。

但是,如果您打算讓它消失,最好的方法是存儲對bar按鈕的引用。當你希望它消失時,將rightBarButtonItem設置爲nil,並在你希望顯示時將它設置爲存儲的引用。視覺

NSMutableArray *barButtonItems = [self.toobbar.items mutableCopy]; 
[barButtonItems removeObject:self.buttonToRemove]; 
[self.toolbar setItems:[barButtonItems copy] animated:NO]; 
1

如果您有多個UIBarButtonItems,你只是想刪除一個,你能做到這一點

斯威夫特3:

self.navigationItem.rightBarButtonItem?.tintColor = UIColor.clear 
self.navigationItem.rightBarButtonItem?.isEnabled = false 
0

如果你只是想「隱藏」它: