2017-03-18 61 views
1

我有這樣的代碼:切換回導航控制器的按鈕

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
{ 
     let controller = SectionsController() 
     self.navigationController?.pushViewController(controller, animated: true) 
} 

在我的課:

class HomeController: UITabBarController,UITableViewDataSource,UITableViewDelegate, AddingProtocoleDelegate 

,我想後退按鈕標題更改爲"Back"

我已經在控制器viewDidLoad部分嘗試了這一點:

 self.navigationItem.backBarButtonItem?.title = "Back" 
     self.navigationController?.navigationBar.backItem?.title = "Back" 
     self.navigationController?.navigationItem.title = "Back" 
     let backButton = UIBarButtonItem(
      title: "Back", 
      style: UIBarButtonItemStyle.plain, 
      target: nil, 
      action: nil 
     ); 
     self.navigationController?.navigationBar.topItem?.backBarButtonItem = backButton; 

但是任何解決方案都不起作用。

請幫忙。

+0

你設置魯德視圖導航控制器? –

+1

可能重複的[如何在導航欄中創建後退按鈕](http://stackoverflow.com/questions/16057327/how-to-create-back-button-in-navigation-bar) –

+0

Nazmul,我設置了家控制器作爲根視圖控制器,但我不知道如何使用'.pushViewController'方法將sectioncontroller作爲新的根視圖控制器 –

回答

0

使用本self.navigationItem.leftBarButtonItem = backButton

+0

這只是在我的導航欄中創建一個新的左按鈕,而不是後退按鈕,只是一個標題爲「返回」的按鈕 –

+0

我發現,我必須在按鈕的動作中使用選擇器,並在目標函數中調用'self.navigationController?.popViewController(animated:true)'。但有一個問題,Xcode告訴我,表達式'UIviewController?'未使用 –

+0

我再次發現^,我必須說'_ = self.navigationcontroller?.popViewController(animated:true)',因爲此方法返回一個ViewController。 –

1

背部按鈕所屬的前視圖控制器,而不是當前呈現在屏幕上的一個。試試看看它是否適合你。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
let backItem = UIBarButtonItem() 
backItem.title = "Back" 
navigationItem.backBarButtonItem = backItem 
} 

斯威夫特3:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
let backItem = UIBarButtonItem() 
backItem.title = "Back" 
navigationItem.backBarButtonItem = backItem 
}