2017-03-18 55 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 
}