[英]Swift - #selector methods not being called
我有 UIBarButtonItem 並且沒有調用選擇器方法,這讓我發瘋了好幾天。
這些在我的 viewDidLoad 方法中
let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: nil, action: #selector(self.doneButtonPressed))
self.navigationItem.rightBarButtonItem = doneButton
let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: nil, action: #selector(self.cancelButtonPressed))
self.navigationItem.leftBarButtonItem = cancelButton
以下是方法:
@objc func doneButtonPressed()
{
dismiss(animated: true, completion: nil)
}
@objc func cancelButtonPressed()
{
dismiss(animated: true, completion: nil)
}
怎么沒人叫他們?
您應該將target
設置為 self 而不是nil
let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(self.doneButtonPressed))
您需要在UIBarButtonItem(title:style:target:action:)
設置一個有效的target
。
這是它在幕后的工作方式: #selector
將您的選擇器轉換為Selector
類型:幾乎 - 但不完全 - 一個字符串的東西。 Objective C 運行時稍后使用該Selector
將帶有 Selector 作為其內容的消息發送到target
; 即它調用目標上的選擇器。
因此,您必須將@objc
注釋添加到您的目標,並且您必須將目標添加到構造函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.