swift 3.0 UIBarButtonItem动作不起作用

时间:2016-11-03 01:54:18

标签: swift3 uibarbuttonitem

let leftbarbuttonitem = UIBarButtonItem(title:"Reset",style: .plain, target: self, action: #selector(tapResetButton(_:)))

    func tapResetButton(_ sender:UIBarButtonItem){
        count = 0
        numberLabel.text = "0"

    }

该操作无法响应click事件。我添加了断点然后发现它甚至没有进入函数。我不知道我的代码有什么问题。任何答案将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:12)

  

Swift 3.0

在ViewDidLoad()中声明UIBarButton

override func viewDidLoad() {
    super.viewDidLoad()
    let logout: UIBarButtonItem = UIBarButtonItem.init(title: "Logout", style: .plain, target: self, action: #selector(ViewController.logOut))
}

func logOut() {
  print("LogOut")
}

声明UIBarButtonItem OutSide ViewDidLoad()

var logout:UIBarButtonItem = UIBarButtonItem()

override func viewDidLoad() {
        super.viewDidLoad()
        logout = UIBarButtonItem.init(title: "Logout", style: .plain, target: self, action: #selector(ViewController.logOut))
}

func logOut() {
      print("LogOut")
}

完全在viewDidLoad()之外宣布

lazy var logout: UIBarButtonItem = {
    UIBarButtonItem.init(title: "Logout", style: .plain, target: self, action: #selector(ViewController.logOut))
}()

任何应该都可以。

对于您的操作参数,您可以明确指定ViewController名称,也可以说self

action: #selector(self.logOut)

答案 1 :(得分:4)

当我将UIBarButtonItem的初始化从函数viewDidLoad中取出时,操作无法响应。但是当我把它放入函数中时。有用。我不知道为什么。但问题得到了解决。如果你知道原因。请告诉我。谢谢。