2015-05-07 31 views
3

我想自定義後退按鈕來顯示一些不同於前一個viewController的標題的文本。Swift:backBarButtonItem自定義文本

我嘗試:

self.navigationItem.backBarButtonItem!.title = "CustomText" 

在viewDidLoad中()中的viewController相關方法。

我在這裏讀了backBarButtonItem in iOS (Swift)左邊的bar按鈕在這裏工作,但在我的情況下它返回nil。

感謝您的幫助!

+0

閱讀'backBarButtonItem'的文檔,並在正確的視圖控制器中設置所需的值。 –

+0

嘗試將其移動到viewWillAppear()。 – MDB983

回答

3

我同意@ Amit89但我建議viewWillDisappear下加入self.navigationItem.title = "CustomText"這樣的:

override func viewWillDisappear(animated: Bool) { 
    super.viewWillDisappear(animated) 
    self.navigationItem.title = "CustomText" 
} 

否則,你的後退按鈕標題會突然新的視圖控制器推動畫完成後消失。

另外,記得在出現時重置舊的視圖控制器的標題。

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 
    self.navigationItem.title = "Original Title" 
} 
+0

viewWillDisappear和viewDidDisappear都可以做到這一點,這一切都取決於您的要求。 – Amit89

+0

兩者都能完成他們的工作,但在這種情況下viewWillDisappear會更好,因爲缺乏顯示新標題的延遲。謝謝! 但是,我很好奇這是什麼backBarButtonItem,如果不是爲了這樣的目的? – DCDC

+0

現在的挑戰是如何避免返回控制器A時發生的滯後 – DCDC

3

執行此標題更改的最佳位置是在其以前的視圖控制器的viewDidDisappear方法中。

例如:你想看看不同的標題在ViewControllerB

ViewControllerA - > ViewControllerB。

ViewControllerA的viewDidDisappear方法,

override func viewDidDisappear(animated: Bool) { 
      self.navigationItem.title = "ABC" 
} 

因此,當它會去ViewControllerB,你會看到 「ABC」 後退按鈕標題。當你回到ViewControllerA時,你應該在ViewControllerA的viewWillAppear方法中恢復舊的標題。