12

是否有人知道如何隱藏的UINavigationController?在我的應用程序中,我有一個編輯按鈕,作爲UINavigationControllerrightBarButtonItem。我想隱藏這個? UIBarButton`當一些操作完成時。隱藏導航控制器的右邊欄按鈕

+0

'self.navigationItem.rightBarButtonItems [1] setEnabled:NO];'如果你有一個數組,就像使用靈活空間一樣。 – 2016-04-28 12:18:35

回答

11

嘗試

self.navigationItem.rightBarButtonItem = nil; 

當你想回來,雖然你必須實例化一個按鈕即

UIBarButtonItem *rightBarButton = 
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch 
               target:self 
               action:@selector(searchBar:)]; 
self.navigationItem.rightBarButtonItem = rightBarButton; 
[rightBarButton release]; 
+1

如果我不想重新創建對象,該怎麼辦?例如,我想隱藏rightBarButton來廣泛的searchBar框架的navigationBar titleView。 我的意思是,隱藏是可能的,通過改變財產或東西? – 2011-11-09 12:35:48

+0

如果您想要繼承UINavigationController。你可以這樣做:self.topViewController.navigationItem.rightBarButtonItem = rightBarButton; self是你的UINavigationController自定義類 – 2016-11-23 20:06:51

15

躲右按鈕:self.navigationItem.rightBarButtonItem = nil;

現在表現出來:

  1. 如果您在視圖控制器中設置了正確的按鈕,只需將其指定給self.editButtonItem,然後再將其重新指定以顯示它:

    self.navigationItem.rightBarButtonItem = self.editButtonItem;

  2. 如果通過分配和初始化UIBarButtonItem在視圖控制器中設置了正確的按鈕,那麼只需在視圖控制器中保留對UIBarButtonItem的引用,並在需要顯示時再指定它。

+0

我試着將rightBarButtonItem賦值給Objective C中的nil,它對我不起作用 – 2016-11-25 10:24:34

10

如果你需要隱藏/顯示基於某些條件的按鈕,試試這個:

if (condition) { 
    self.navigationItem.rightBarButtonItem.title = @""; 
    self.navigationItem.rightBarButtonItem.enabled = NO; 
} else { 
    self.navigationItem.rightBarButtonItem.title = @"my button title"; 
    self.navigationItem.rightBarButtonItem.enabled = YES; 
} 

這樣你就不必保存到按鈕的引用在一個屬性或者擔心關於在新按鈕上佈置動作。