【问题标题】:UIButton click crashing does not implement methodSignatureForSelector: -- trouble ahead Unrecognized selectorUIButton点击崩溃没有实现methodSignatureForSelector:--前面的麻烦无法识别的选择器
【发布时间】:2015-04-02 09:05:34
【问题描述】:

在 Swift 中,当按下按钮时,应用程序崩溃并出现错误

没有实现 methodSignatureForSelector: -- 前面的麻烦 无法识别的选择器

在代码中,我的一个 Controller 类获取对 UIButton 的引用并添加如下目标

aButton.addTarget(self, action: "pressed:", forControlEvents: UIControlEvents.TouchUpInside)

按下的函数定义为

func pressed(sender:UIButton)
{
   println("button pressed")
}

Controller 类定义如下

class MyController
{
 init()
{
}
// Also here it gets the reference to the UIButton and has pressed function as well.
}

【问题讨论】:

标签: ios swift


【解决方案1】:

我发现的问题是 MyController 类需要从 NSObject 类继承。将类声明更改为如下解决了我的问题。

class MyController : NSObject
{
    override init() // since it is overriding the NSObject init
    {
    }
}

这可能是因为 NSObject 实现了respondsToSelector 之类的方法。在调用pressed:函数之前,它会尝试检查它是否实际上实现了选择器pressed:。但是由于 MyController 也没有respondsToSelector,所以它崩溃了。

【讨论】:

    【解决方案2】:

    另一种选择是将@objc 添加到您的class 声明中。

    我发现使用NSTimer 调用会崩溃。

    【讨论】:

    • 在按钮调用的函数之前添加@objc 对我有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 2019-04-07
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    相关资源
    最近更新 更多