swift按钮通过代码添加点击事件时出现unrecognized selector sent to instance 0x136ea5010错误

来源:互联网 发布:网络执法官绿色破解版 编辑:程序博客网 时间:2024/06/08 04:50
当通过按钮的addTarget函数添加事件时,如下代码:

btn.addTarget(self, action:"tapped", forControlEvents:UIControlEvents.TouchDown)

在运行后会出现以下错误:

2015-11-29 22:02:38.551 TextView[1753:527042] -[TextView.ViewController tapped]: unrecognized selector sent to instance 0x136ea5010

2015-11-29 22:02:38.557 TextView[1753:527042] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[TextView.ViewController tapped]: unrecognized selector sent to instance 0x136ea5010'

*** First throw call stack:

(0x184aa0f48 0x199563f80 0x184aa7c5c 0x184aa4c00 0x1849a8cac 0x18a06bcfc 0x18a06bc78 0x18a053930 0x18a0743cc 0x18a06b014 0x18a063cdc 0x18a0344a4 0x18a03276c 0x184a58544 0x184a57fd8 0x184a55cd8 0x184984ca0 0x18fbc0088 0x18a09cffc 0x1000f2110 0x199db28b8)

libc++abi.dylib: terminating with uncaught exception of type NSException

(lldb) 

出现这个原因是由于在tapped函数里边加了一个按钮对象,如下方法所示:

func tapped(button: UIButton)

    {

        let alert=UIAlertController()

        alert.title="sxj"

        alert.message="哈哈"

        self.presentViewController(alert, animated:true, completion: nil)

        print("哈哈")

    }

第一种方法是在tapped前要加上冒号,如下代码所示:
btn.addTarget(self, action:"tapped:", forControlEvents:UIControlEvents.TouchDown)
最后运行结果如下图:

第二种方法是将方法中的参数button: UIButton去掉,如改成以下方式:

func tapped()

    {

        let alert=UIAlertController()

        alert.title="sxj"

        alert.message="哈哈"

        self.presentViewController(alert, animated:true, completion: nil)

        print("哈哈")

    }

效果和第一种方法相同

两种方法说明:第一种方法是带传递触摸对象的,第二种方法是不带传递对象的。

0 0
原创粉丝点击