在导航控制器中设置后退按钮

时间:2015-12-23 06:14:17

标签: ios iphone xcode swift uinavigationcontroller

所以我有3个View控制器:V1,V2和V3。当我按下V1上的按钮时,它会将我射到V3。我想保留" Back Arrow"但改变那里的文字。我已经尝试了很多东西,但是当显示视图或者我的代码不起作用时,后面的单词要么重新收回。

任何建议?

我已经使用过此代码

self.navigationController?.navigationBar.topItem?.backBarButtonItem = UIBarButtonItem(title: "YO", style: .Plain, target: nil, action: nil)

let backbutton = UIButton(type: .Custom)
backbutton.setImage(UIImage(named: "BackButton.png"), forState: .Normal) // Image can be downloaded from here below link
backbutton.setTitle("Back", forState: .Normal)
backbutton.setTitleColor(backbutton.tintColor, forState: .Normal) // You can change the TitleColor
backbutton.addTarget(self, action: "backAction", forControlEvents: .TouchUpInside)

self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backbutton)

func backAction() -> Void {
    self.navigationController?.popViewControllerAnimated(true)
}

我尝试使用我在Stack上找到的代码创建我的按钮但按钮消失了,后退按钮再次出现在它的位置。

1 个答案:

答案 0 :(得分:1)

您可以将navigationItem.leftBarButtonItem设置为您自己设计的按钮。这会覆盖backBarButtonItem,iOS不会用“后退”替换您的文字。但是如果你想要一个箭头,你必须自己设计它作为按钮的一部分。

在我的代码中,每当标题发生变化时我都会设置按钮:

override var title:String? {
    get {
      return super.title
    }
    set {
      super.title = newValue
      if (navigationController?.childViewControllers.count > 1) {
        let backButton = // ... custom button
        navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backButton)
        backButton.addTarget(self, action: "backAction", forControlEvents: .TouchUpInside)
      } else {
        navigationItem.hidesBackButton = true
      }