let leftbarbuttonitem = UIBarButtonItem(title:"Reset",style: .plain, target: self, action: #selector(tapResetButton(_:)))
func tapResetButton(_ sender:UIBarButtonItem){
count = 0
numberLabel.text = "0"
}
该操作无法响应click事件。我添加了断点然后发现它甚至没有进入函数。我不知道我的代码有什么问题。任何答案将不胜感激。提前谢谢。
答案 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中取出时,操作无法响应。但是当我把它放入函数中时。有用。我不知道为什么。但问题得到了解决。如果你知道原因。请告诉我。谢谢。