Swift4.2 Selector: 按钮点击事件

一、 随着swift语言的不断更新,语法也会偶尔发生变化。在做新项目时候,Swift4.2版本,创建一个按钮,注册点击事件
//  事件监听 ,旧版本是这种写法
composeBtn.addTarget(self, action: Selector("composeBtnClick"), for: .touchUpInside)

1.1 但是运行崩溃,警告如下:

Swift4.2 Selector: 按钮点击事件_第1张图片
警告1

1.2 点击"Fix"

action: Selector(("composeBtnClick")) // 没有警告  但是点击按钮崩溃,崩溃截图如下3
二、实现点击事件方法
/// 事件监听
extension PNMainViewController{
   func composeBtnClick(){
        print("composeBtnClick")
    }
}
三、运行结果崩溃

Swift4.2 Selector: 按钮点击事件_第2张图片
运行结果

分析原因:意思是找不到这个方法,这个方法不在方法列表里,如果加上 @objc,就会把该方法添加到方法列表中。所以, @objc必须加上。

解决办法:

(因为方法前面没有加上@objc)在需要实现的方法前加上@objc, 上一个警告就变为:

Swift4.2 Selector: 按钮点击事件_第3张图片
警告2

点击"Fix",运行,点击按钮,调用方法成功:

  composeBtn.addTarget(
                 self, 
                 action: #selector(PNMainViewController.composeBtnClick) , 
                 for: .touchUpInside
                 )

总结:
1 @objc必须加到方法前面
2 Selector 要正确写选择器

你可能感兴趣的:(Swift4.2 Selector: 按钮点击事件)