如何添加后退按钮到自定义的UINavigationBar

问题描述:

我使用约束创建了自定义的UINavigationBar。我无法为其添加后退按钮。我可以制作一个用户界面按钮并将其放置在顶部,但除非必须,否则我不想这样做。如何添加后退按钮到自定义的UINavigationBar

这是使用的相关代码。

let navBar: UINavigationBar = { 


    let myNav = UINavigationBar() 

    myNav.translatesAutoresizingMaskIntoConstraints = false 

    return myNav 

    }() 


func setUpNavBarView(){ 


self.navBar.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true 
self.navBar.topAnchor.constraint(equalTo: view.topAnchor as NSLayoutAnchor<NSLayoutYAxisAnchor>).isActive = true 
self.navBar.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true 
self.navBar.heightAnchor.constraint(equalToConstant: 60).isActive = true 

    self.navBar.barTintColor = UIColor.red 

    self.navBar.isTranslucent = false 


} 
+0

你有导航控制器上一个视图控制器? – MacStation

+0

我不这样认为,这会迫使它添加一个后退按钮,因为之前的viewController将会是第一个在堆栈中的第一个? –

+0

我相信是这样的,通过向导航控制器添加一个先前的视图控制器,它应该有一个后退按钮,默认为前一个视图控制器的名称,或者返回,如果为零。 – MacStation

lazy var backButton: UIBarButtonItem = { 
    let button = UIBarButtonItem(image: "Image", style: .plain, target: self, action: #selector(backButtonTapped)) 
    return button 
}() 

navigationItem.setLeftBarButton(backButton, animated: false) 

func backButtonTapped() { 
    //Do transition here 
} 
+0

我把viewIdLoad中的navigationItem.setLeftBarButton(backButton,animated:false)吗? –

+0

从技术上讲,你可以随时在VC的生命周期中做到这一点,但如果你希望它出现在视图中,那么yes,viewDidLoad是一个很好的选择。 – JustinM

+0

我测试了你的代码,没有错误,但按钮没有显示出来。我把测试图像放在它说“图像”的地方。我打算玩一下viewController –