Cha*_*ndo 42 selector ios swift
看看这个示例代码:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let letterButton = UIButton.buttonWithType(.Custom) as UIButton
self.view.addSubview(letterButton)
letterButton.addTarget(self, action:Selector("buttonDidTap:"), forControlEvents: .TouchUpInside)
}
func buttonDidTap(button: UIButton!) {
print(button.char)
}
}
Run Code Online (Sandbox Code Playgroud)
UIButton只要Selector是公共的或内部的,工作的目标操作就可以了,但是如果它是私有的,它会因为无法识别的选择器发送到实例而崩溃
有什么办法可以实现吗?我不想公开或内部使用tap功能.
Bry*_*hen 98
你需要@objc向objc运行时公开一个私有方法
@objc private func buttonDidTap(button:UIButton!) {
println(button.char)
}
Run Code Online (Sandbox Code Playgroud)
如果没有另外注释,标记为private的声明不会暴露给Objective-C运行时.无论访问级别如何,IB出口,IB操作和核心数据托管属性仍然会暴露给Objective-C.如果您需要可以从Objective-C调用私有方法或属性(例如对于使用基于选择器的回调的旧API),请将@objc属性显式添加到声明中.!
| 归档时间: |
|
| 查看次数: |
8398 次 |
| 最近记录: |