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

当通过按钮的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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值