簡體   English   中英

Swift - #selector 方法未被調用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM