呈现视图控制器时设置后退按钮

Amo*_*gar 2 uinavigationbar ios swift

单击按钮后,我将使用以下代码显示视图控制器:

let navController = UINavigationController(rootViewController: locationVC)
navController.navigationBar.barTintColor = StyleHelper.navBarColor()
navController.navigationBar.tintColor = UIColor.whiteColor()               
navController.navigationItem.backBarButtonItem = UIBarButtonItem(image: UIImage(named: "back_arrow"), style: .Plain, target: locationVC, action: nil)
self.presentViewController(navController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

但是后退按钮没有出现在locationVC上

我究竟做错了什么?请帮忙

San*_*ari 7

代码有多个问题。

问题1:

您应该更新viewController的条形按钮项,而不是navigationController的条形按钮项。

所以这是错的

navController.navigationItem.backBarButtonItem
Run Code Online (Sandbox Code Playgroud)

什么是正确的

self.navigationItem.backBarButtonItem
Run Code Online (Sandbox Code Playgroud)

问题2:

上面的代码不起作用,因为您当前的viewController没有被任何其他VC推动,因此它无法显示后退按钮。您需要的是leftBarButtonItem

因此,在您的VC中,您可以编写

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Abcd", style: .done, target: self, action: yourSelectorHere)
}
Run Code Online (Sandbox Code Playgroud)

O / P:

在此处输入图片说明


小智 5

后退按钮仅针对导航堆栈中的视图控制器显示。

您创建新的导航控制器堆栈并将 locationVC 作为根控制器,这样就不会有任何视图控制器可以返回。

如果您将另一个视图控制器推送到导航堆栈,那么您将获得后退按钮。