1

所示的UIViewController作爲問題說如何改變,我需要能夠在不同UIViewControllers由UINavigationController的顯示改變UINavigationBar的內容。這對於標題很容易實現,因爲導航控制器只是使用視圖控制器的title屬性。我正在努力的是根據視圖控制器更改左右欄按鈕項目。UINavigationBar的取決於UINavigationController的

,我會用它來改變他們的代碼已經在多個其他問題,解決,是不是真正的問題,雖然參考,我將使用下列內容:

UIBarButtonItem *newItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: 
    UIBarButtonSystemItemAdd target:self action:nil]; 
newItem.tintColor = [UIColor whiteColor]; 
self.navigationItem.rightBarButtonItem = newItem; 

我想我我正在尋找的是每當導航控制器顯示新的UIViewController以設置導航控制器佈局時調用的方法。在UINavigationController的的文檔是下面的方法:

// Called when the navigation controller shows a new top view controller via a push, pop or setting of the view controller stack. 
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated; 

然而,這種方法貌似不是在任何時候叫,當我運行的應用程序。那麼,當導航控制器顯示一個新的視圖控制器時,是否有一種方法會被調用?或者我在這裏完全錯了,現在已經有一種可以接受的方式,讓導航欄隨着顯示在其下面的視圖而改變,而我迄今爲止錯過了?

+0

該方法是'UINavigationControllerDelegate'協議,而不是'UINavigationController'本身的一部分。你採用了協議並設置了「委託」? – pbasdf

+0

您想以什麼方式更改不會自動發生的導航欄? – Wain

+0

通常,您可以分別在每個視圖控制器中分配barButton項目(自動添加後退按鈕)。是否有一個原因,你想在導航控制器中做到這一點? –

回答

1

典型的解決方案是把代碼中的每個視圖控制器的viewDidLoad方法,設置了期望的按鈕。

在您的問題代碼的第一位將是對導航欄的右側被示出在顯示時(視圖控制器)的圖控制器建立一個期望的按鈕的一個很好的例子。

沒有什麼需要用導航控制器委託或導航控制器本身的事情。

相關問題