4

在XCode 4.5.1中使用導航控制器創建故事板應用程序,我很難嘗試爲推送的任何視圖控制器設置BACK按鈕。我正在使用segue,視圖控制器按預期顯示。不過我想動態改變導航欄和後退按鈕的名稱,並放在這在我的viewWillAppear中:故事板UINavigation Controller後退按鈕文本

self.title = @"Select Songs"; 
    [self.backButton setTitle:@"Add"]; 

改變導航欄的標題,但後退按鈕仍然顯示推窗的名稱,而不是文字「添加」。

模擬量度都是推斷的。我還將一個BarButtonItem添加到Xcode視圖下方的黑色托盤中,並將viewcontroller的backButton連接到backButton,但文本仍然不出現。

添加以下日誌消息也產生一些有趣的事情:(,但標題欄被正確地更新)

-(void) viewDidAppear:(BOOL)animated { 
    NSLog(@"%s %@", __FUNCTION__, self.navigationItem.backBarButtonItem); 
    NSLog(@"%s %@", __FUNCTION__, self.navigationController.navigationItem.backBarButtonItem); 
} 

2012-10-14 15:18:41.835 xxxx[2690:907] -[ViewController viewDidAppear:] (null) 
2012-10-14 15:18:41.838 xxxx[2690:907] -[ViewController viewDidAppear:] (null) 

回答

8

後退按鈕將顯示前視圖的標題,如果沒有標題被設定,它會顯示'返回'。

因此,在您的prepareForSegue方法中,您可以在推下一個視圖之前更改當前視圖的標題。後退按鈕將顯示您設置標題的內容。

+0

如果前一個控制器的標題很長,還會顯示「返回」。我花了一個小時才弄明白。 – Alexey

12

接受的答案是一個黑客,這是做它的方式......

  1. 打開故事板
  2. 在文檔大綱窗口中找到的ViewController您要 返回
  3. 點擊哪個在該視圖控制器的導航項目
  4. 在資源管理器的屬性變化後退按鈕的價值,您的自定義瓷磚

就是這樣,享受...

+3

這不僅僅是一種不同的方法。但我同意你的看法,你的方式是更好的方式(我可以找到)。特別是如果你的項目依賴於故事板。 – timgcarlson

+0

我同意這是一個黑客攻擊。在我看來,這是一個更好的答案,應該是公認的答案。但我有個問題。如何將後退按鈕標題設爲空白?我有點不喜歡爲它使用文字空間。 – ton