#selector()
和响应者链
由于 Swift 2.2 中 Selector 的新语法,我在 “Utilize the responder chain for target action” 一文中使用的方法出现了一个警告,下面我们来修复它。
协议实现
首先,我们添加一个协议:
@objc protocol DetailShowable {
@objc func showDetail()
}
复制代码
然后,我们可以像 Andyy Hope 那篇神奇的博文 中描述的那样,为 Selector
添加一个扩展,代码如下:
private extension Selector {
static let showDetail = #selector(DetailShowable.showDetail)
}
复制代码
把 action 添加到响应链非常简单:
button.addTarget(nil,
action: .showDetail,
forControlEvents: .TouchUpInside)
复制代码
接下来,响应者链中的一些响应对象需要遵循 DetailShowable
协议。
你可以在 GitHub 找到相关代码。