Swift:addTarget 动作是不是只允许类方法?
Posted
技术标签:
【中文标题】Swift:addTarget 动作是不是只允许类方法?【英文标题】:Swift: Are addTarget actions only allowing class methods?Swift:addTarget 动作是否只允许类方法? 【发布时间】:2015-05-27 21:14:01 【问题描述】:我尝试将目标添加到 UIButton 并偶然发现了一个奇怪的行为
如果我尝试:
//h = a collection view header
switch myVar
case "none":
h.button.addTarget(self, action: "buttonTapped:", forControlEvents: .TouchUpInside)
func buttonTapped(sender:AnyObject)
sendFriendRequest(self.targetUser,nil
我得到了 SIGABRT - “找不到选择器”
但如果我将函数移出开关盒并使其成为我的 ViewController 的方法,一切都会按预期工作。
有人对此有解释吗?是不允许还是有技术原因?
【问题讨论】:
你只需要为你的视图控制器创建一个方法。因为目标是自己!这意味着在当前类中查找此方法。否则指定声明此方法的对象。 【参考方案1】:Selector
s 不必是 class
函数,但它们必须对调用选择器的对象可见(即不能标记为 private
或在方法内)。
【讨论】:
【参考方案2】:您可以使用其他class's instance
而不是self
来调用项目中的任何方法。
查看此答案以获取详细信息。 https://***.com/a/33068386/2125010
【讨论】:
以上是关于Swift:addTarget 动作是不是只允许类方法?的主要内容,如果未能解决你的问题,请参考以下文章
UIButton 的 Swift addTarget 在 UIView 中不起作用
《从零開始学Swift》学习笔记(Day 65)——Cocoa Touch设计模式及应用之选择器
《从零开始学Swift》学习笔记(Day 65)——Cocoa Touch设计模式及应用之选择器
《从零开始学Swift》学习笔记(Day 65)——Cocoa Touch设计模式及应用之选择器
Swift:UIScrollView 和 UIControl - addTarget | addGestureRecognizer - 没有按预期工作