【问题标题】:How to change UINavigationController Title & backButton programming?如何更改 UINavigationController Title & backButton 编程?
【发布时间】:2017-07-25 23:19:00
【问题描述】:

我有两个 viewController。

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)]

}

【问题讨论】:

  • 什么不起作用的按钮没有添加到导航栏或没有执行操作?
  • 如何让它工作?
  • 你想在按钮点击时继续上一个控制器吗?
  • 勾选this(标题)和this(后退按钮)。祝你好运。

标签: ios iphone swift uinavigationcontroller


【解决方案1】:

将下面的代码放置在 perform(segue)viewWillDissappear 中取决于您如何进行演示 - 通过 Storyboard segue 或手动从代码中。

let backButton = UIBarButtonItem()
backButton.title = "whatever_you_want"
navigationItem.backBarButtonItem = backButton

在你的vc2viewDidLoad 中简单地放

navigationItem.title = "Controller title"

【讨论】:

    【解决方案2】:

    我可以在情节提要中更改它或在代码中更改它。

    我通常这样做。

    首先从默认导航控制器中隐藏导航栏。

    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)
    }
    

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-06
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      • 2015-02-08
      • 1970-01-01
      相关资源
      最近更新 更多