2009-08-04 104 views
14

我已經通過Interface Builder在nav.bar的左側添加了一個BarButton項目,並且在代碼中我希望這隻能顯示在我的表視圖的編輯模式中。但我沒有發現任何隱藏的財產來設置leftBarButtonItem(如:self.navigationItem.leftBarButtonItem.hidden = YES)。隱藏UINavigationItem的酒吧按鈕

我只能設置enabled屬性。任何人都知道如何控制leftBarButtonItem的隱藏和顯示屬性,請幫助。

回答

7

我敢肯定,「隱藏」它的唯一方法就是將其省略掉。

self.navigationItem.leftBarButtonItem = nil; 

雖然它不是你的問題的完美答案,因爲它基本上擺脫了你的按鈕,而不是隱藏它。您將不得不重新創建它或保留原始按鈕,只需將leftBarButtonItem設置回您的UIBarButtonItem即可。

+0

感謝您的回覆。如果我真的不能隱藏,我也在想這樣一種方法。 – Sreehari 2009-08-04 08:48:22

2

在文檔中沒有任何建議欄項具有隱藏屬性。

爲什麼不設置

self.navigationItem.leftBarButtonItem = nil; 

當用戶沒有編輯,然後設置

self.navigationItem.leftBarButtonItem = whateverBarButtonItem; 

當用戶正在編輯?這需要每次重新創建按鈕或在視圖生命週期期間存儲它。也不是非常痛苦,但不是,就像隱藏的財產一樣容易。

+0

尼爾打敗了我 - 完全。 – 2009-08-04 08:47:54

55

這工作我沒有嘗試過自己

self.navigationItem.leftBarButtonItem = nil; 
self.navigationItem.hidesBackButton = YES;  
+3

在某些情況下,將它設置爲零對我來說不起作用,但將hideBackButton設置爲YES正常工作!謝謝。 – 2010-12-22 14:53:34

+1

設置爲nil將讓navigationItem遵循其默認行爲,即在導航控制器的子視圖中顯示後退按鈕,這就是爲什麼您還需要將hidesBackButton設置爲true,如果您不想顯示任何內容曾經 – Nycen 2015-02-08 17:40:44

1

您可以使用

[self.navigationItem.leftBarButtonItem setEnabled:TRUE]; 

,因爲沒有其他的方法來隱藏它。所以只需禁用它。

3

我剛剛創建低於我自己的 「隱藏」 功能顯示:

- (void)hideClearButton:(BOOL)hide { 

    if (hide) { 
     self.navigationItem.leftBarButtonItem = nil; 
    } 
    else { 
     self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] 
               initWithTitle:NSLocalizedString(@"Clear", @"Recents") 
               style:UIBarButtonItemStylePlain 
               target:self action:@selector(clearAll:)]; 

    } 
} 

你可以叫它像:

[self hideClearButton:YES]; //hide it 

[self hideClearButton:NO]; //show it 
1

隱藏/禁用

[self.navigationItem.leftBarButtonItem setEnabled:FALSE]; 

要顯示/啓用

[self.navigationItem.leftBarButtonItem setEnabled:TRUE]; 
4

您可以使用

// Hide 
self.navigationItem.leftBarButtonItem = nil; 

// Show 
self.navigationItem.leftBarButtonItem = self.myBarButtonItem 

的關鍵是確保你有nilling leftBarButtonItem參考按鈕項。

@property (strong, nonatomic) IBOutlet UIBarButtonItem *myBarButtonItem; 
0

好使它成爲零是不是一個選擇,因爲我想再次顯示它,並不想再次創建一個按鈕。

所以我所做的就是

UIBarButtonItem *barButton = (UIBarButtonItem *)self.navBar.topItem.leftBarButtonItem; 
barButton.customView.hidden = true;//Hide 
barButton.customView.hidden = false;//Show 

爲我工作。 (我的leftBarButtonItem是使用customView創建的)

希望它有幫助。

0

這對我

UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)]; 
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView]; 
self.navigationItem.leftBarButtonItem = btnL; 
0

解決方案的工作,我有一個簡單的功能,使這個。 我有這樣的導航。 Navigation Bar 它來自Interface Builder,它有一個背景圖像。

@IBOutlet weak var memberBtn: UIBarButtonItem! 

你可以隱藏/顯示用它:

func hideMemberBtn() { 
    memberBtn.isEnabled = false 
    memberBtn.tintColor = UIColor.clear 
} 
func showMemberBtn() { 
    memberBtn.isEnabled = true 
    memberBtn.tintColor = UIColor.white 
} 

這很容易,但它爲我工作。您可以根據需要更改tintColor。 希望求助:]