繁体   English   中英

如何更改UINavigationController标题和backButton编程?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM