【问题标题】:Setting Back Button in Navigation Controller在导航控制器中设置返回按钮
【发布时间】:2015-12-23 06:14:16
【问题描述】:

所以我有 3 个视图控制器:V1、V2 和 V3。当我按下 V1 上的按钮时,它会将我带到 V3。我想保留“后退箭头”,但在那里更改文本。我已经尝试了很多东西,但是当视图显示或我的代码不起作用时,要么收割机,要么我的代码不起作用。

有什么建议吗?

我已经用过这段代码了

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 上找到的这段代码创建我的 Button,但是按钮消失了,后退按钮又出现在它的位置。

【问题讨论】:

  • 后退按钮显示的文本由前一个视图控制器的标题设置
  • self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: nil, action: nil)viewDidLoad 中试试这个,已经有很多与此相关的问题。
  • @Paulw11 是的,我知道这一点。当视图出现时,新文本出现在那里,但突然之间,Back 替换了它。
  • @Bunty Madan 我试过这个,但它不适用于我的情况。我不知道这是否与我跳过 V2 的事实有关?
  • @JakeC 如果可能,然后分享您的演示项目

标签: ios iphone xcode swift uinavigationcontroller


【解决方案1】:

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

在我的代码中,每当标题更改时,我都会设置按钮:

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
      }

【讨论】:

  • 我实际上尝试过这样做,然后按钮弹出然后消失,返回按钮再次出现。我用我创建的按钮更新了上面的代码
  • 这个答案很好用。我现在只需要制作一个自定义的后退按钮。如果您有时间,请发布它!谢谢
  • 我从this button tutorial开始。这是 Obj-C,但 Swiftify 并不难
猜你喜欢
  • 2014-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
  • 1970-01-01
  • 2012-11-07
相关资源
最近更新 更多