【问题标题】:how to set action backBarButtonItem in swift?如何快速设置动作 backBarButtonItem?
【发布时间】:2014-10-17 09:26:15
【问题描述】:

如何设置动作 backBarButtonItem 仍然显示左箭头?

我使用了这段代码,但箭头没有显示

var barBack = UIBarButtonItem(title: "Reset", style: UIBarButtonItemStyle.Plain, target: self, action: "reset:")
self.navigationItem.leftBarButtonItem = barBack

但是当我使用此代码时,操作不起作用

self.navigationController?.navigationBar.topItem?.backBarButtonItem = barBack

谢谢

【问题讨论】:

    标签: xcode swift uinavigationbar backbarbuttonitem


    【解决方案1】:

    作为设置操作的替代方法,您可以保留backBarButtonItem 并使用isMovingFromParentViewController 来处理返回导航堆栈的逻辑。

    override func viewWillDisappear(animated: Bool) {
        super.viewWillDisappear(animated)
        if isMovingFromParentViewController() {
            .. do something here
        }
    }
    

    【讨论】:

      【解决方案2】:

      试试这个

      var barBack = UIBarButtonItem(title: "Reset", style: UIBarButtonItemStyle.Plain, target: self, action: "reset:")
      self.navigationItem.leftBarButtonItem = barBack
      

      让我知道它是否有效。

      【讨论】:

      • 这似乎是我的代码。请仔细阅读我的问题。谢谢
      • 实际上有点不同,因为您使用的是导航控制器导航栏的顶部项目属性,该属性可能并不总是处于活动状态,例如当页面未嵌入导航控制器时。另一方面,我正在使用页面导航项的 leftBarButtonItem。请尝试我的代码,看看它是否有效,因为我在发布答案之前已经尝试过了
      • 我们的代码之间唯一的共同点是 barbuttonitem 的初始化
      【解决方案3】:

      试试这个: 在ViewDidLoad

          let backButton = UIBarButtonItem(title: "< Home", style: UIBarButtonItemStyle.Plain, target: self, action: "goBack")
          navigationItem.leftBarButtonItem = backButton
          navigationItem.backBarButtonItem?.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "the_font_you_want_to_use", size: size_of_the_font_this_should_be_integer)!], forState: UIControlState.Normal)
      

      并实现以下方法:

          func goBack() {
          self.navigationController?.popToRootViewControllerAnimated(boolean)
      }
      

      只需将 the_font_you_want_to_use、size_of_the_font_this_should_be_integer 和 boolean 替换为您想要的值,一切都会正常工作。

      *** 编辑

      如果你不想回到Root View Controller,而不是

      self.navigationController?.popToRootViewControllerAnimated(boolean)
      

      你可以说:

      self.navigationController?.popViewControllerAnimated(boolean)
      

      甚至弹出到其他一些ViewController,指定popToViewController 的第一个参数是YourViewController 类的对象,第二个是动画的布尔值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 2015-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多