未调用 Swift 选择器方法

Swift selector method not being called

提问人:Zim 提问时间:2/17/2021 最后编辑:WillekeZim 更新时间:2/17/2021 访问量:739

问:

我创建一个操作类来存储选择器,然后将 Target 添加到按钮,但是当我单击它时,操作类中的方法尚未被调用

class ItemCardAction {
    
    static var shared: ItemCardAction = ItemCardAction()
    
    private init() {
       
    }
    
    var action: Selector = #selector(ItemCardAction.shared.buttonPressed)

    @objc func buttonPressed(_ sender: UIButton!) {
        print("TEST")
        AppEngine.shared.updateItem(tag: sender.tag)
        AppEngine.shared.notigyAllObservers()
        //self.updateUI()
    }
}

添加目标

button.addTarget(self, action: ItemCardAction.shared.action, for: .touchDown)
Objective-C Swift UIBubutton 操作 选择器

评论

3赞 Sweeper 2/17/2021
而不是 ,尝试使用作为目标。selfItemCardAction.shared

答:

1赞 Sandeep Bhandari 2/17/2021 #1

你需要的是

button.addTarget(ItemCardAction.shared, action: ItemCardAction.shared.action, for: .touchUpInside)

如果你仔细看一下方法,第一个参数是target,当按钮接收到(在这种特定情况下)触摸内部事件时,iOS将在指定的目标中查找指定的选择器(在操作参数中指定)。在您的情况下,您将目标指定为 并且显然选择器在 的范围内不可用,因此不会发生任何事情:)addTargetselfself