11

我有問題顯示導航欄的rightBarButtonItem - 我試圖在應用程序委託中創建它,我的UINavigationController設置。rightBarButtonItem不會出現在導航欄iOS

代碼如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

// Override point for customization after application launch. 
RSCListViewController *list = [[RSCListViewController alloc] initWithStyle:UITableViewStylePlain]; 
self.navController = [[UINavigationController alloc] initWithRootViewController:list]; 

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithTitle:@"+" 
                   style:UIBarButtonItemStylePlain 
                  target:list 
                  action:@selector(addPressed:)]; 

self.navController.navigationItem.rightBarButtonItem = barButton; 

self.window.backgroundColor = [UIColor whiteColor]; 
[self.window makeKeyAndVisible]; 

[DatabaseManager openDatabase]; 

return YES; 
} 

運行應用程序,沒有按鈕項目出現在導航欄上。

我不確定我是否漏掉了一些明顯的東西 - 我嘗試使用相關的堆棧溢出線程糾正問題並沒有取得任何成功。

任何幫助表示讚賞。

+0

一切顯示正常? – Kyle

回答

29

您需要將您的酒吧按​​鈕項目附加到您的自定義視圖控制器,而不是導航控制器。從Updating the Navigation Bar

此外,導航控制器對象建立導航欄動態地使用具有上 導航堆棧的視圖控制器相關聯的導航項目(實例UINavigationItem類的 )的 內容。要更改導航欄的內容, 因此您必須爲您的自定義視圖 控制器配置導航項目。

(...)

導航控制器更新導航欄 右側如下:

  • 如果新的頂層視圖控制器具有自定義權限欄按鈕項目,該項目被顯示。要指定一個自定義右鍵欄按鈕 項目,請設置視圖控制器的 導航項目的rightBarButtonItem屬性。

  • 如果未指定自定義右側欄按鈕項目,則導航欄在右側欄上不顯示任何內容。

因此,替換:

self.navController.navigationItem.rightBarButtonItem = barButton; 

有:

list.navigationItem.rightBarButtonItem = barButton; 
+0

謝謝 - 曾經假定顯示在導航欄上的元素與導航控制器綁定,而不是堆棧頂部的視圖...但是現在我考慮一下,導航欄沒什麼意義會因爲顯示哪個視圖而經常改變。再次感謝您的幫助。 – Russell

+0

歡迎:) – albertamg

+0

由於某些原因,當您設置rightBarButtonItem的navigationItem爲rootViewController時,VC無法正常工作:-(但是,正如您所說,只要具有@ navigationItem.rightBarButtonItem = whatever的vc就可以正常工作;「是儘管推到導航堆棧。 –