let leftbarbuttonitem = UIBarButtonItem(title:"Reset",style: .plain, target: self, action: #selector(tapResetButton(_:)))
func tapResetButton(_ sender:UIBarButtonItem){
count = 0
numberLabel.text = "0"
}
アクションはクリックイベントに応答できません。ブレークポイントを追加したところ、関数に含まれていませんでした。コードの何が問題なのかわかりません。どんな答えでもいただければ幸いです。前もって感謝します。
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)
UIBarButtonItemの初期化を関数viewDidLoadから外すと、アクションが応答しません。しかし、私がそれを関数に入れると。できます。理由はわかりません。しかし、問題は解決されました。あなたが理由を知っているなら。教えてください。ありがとうございました。