[英]How to change UINavigationController Title & backButton programming?
我有两个viewControllers。
vc1-> presentVC-> vc2
vc2继承UINavigationController
我想在vc2中设置title&backButton,但是它不起作用。
class vc2: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
// set title!!!
//self.navigationItem.title = "123"
//self.navigationController?.navigationBar.topItem?.title = "123"
//self.title = "123"
//self.navigationBar.topItem?.title = "123"
//self.navigationItem.title = "123"
// set backButton!!!
let navButtonWidth:CGFloat = 44
let backButton:UIButton = UIButton()
backButton.setImage(backImage, for: .normal)
backButton.addTarget(self, action: #selector(back), for: .touchUpInside)
self.navigationItem.leftBarButtonItems = [UIBarButtonItem(customView: backButton)]
}
将下面的代码放置在perform(segue)或viewWillDissappear中,具体取决于您如何进行演示(通过情节提要segue或手动从代码中进行演示)。
let backButton = UIBarButtonItem()
backButton.title = "whatever_you_want"
navigationItem.backBarButtonItem = backButton
而在您的vc2
viewDidLoad中 ,只需将
navigationItem.title = "Controller title"
我可以在情节提要中更改它,也可以在代码中更改它。
我通常这样做。
首先从默认导航控制器隐藏导航栏。
navigationController?.navigationBar.hidden = true
在情节提要中创建导航栏并将其出口。
@IBOutlet weak var navigationBar: UINavigationBar!
创建自定义导航项。
private lazy var customNavigationItem: UINavigationItem = {
let navigationItem = UINavigationItem()
let backButton = UIBarButtonItem(image: UIImage(named: "cancel_icon"), style: .Plain, target: self, action: #selector(cancelTapped))
navigationItem.leftBarButtonItem = backButton
navigationItem.title = "Your Title"
return navigationItem
}()
将自定义导航项添加到导航栏
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
navigationController?.navigationBar.hidden = true
navigationBar.setItems([customNavigationItem], animated: false)
}
希望对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.