Ken*_*eth 4 protocols delegation ios swift
我有一个协议,充当一个视图和另一个视图之间的委托.
协议看起来像这样:
protocol MyProtocol: class {
func functionOne()
}
Run Code Online (Sandbox Code Playgroud)
协议的实现方式View2如下:
extension View2:MyProtocol {
func functionOne() {
print("Hello World"
}
}
Run Code Online (Sandbox Code Playgroud)
现在我希望这个方法被一个按钮的目标调用View1.所以在View1我有一条线:
myButton(self, action: #selector(delegate?.functionOne), forControlEvents: .TouchUpInside)
Run Code Online (Sandbox Code Playgroud)
但是按钮行错误"Use of unresolved identifier 'functionOne'",这是我以前在其他问题中没有见过的错误.
如果我functionTwo进入View1并设置目标functionTwo,然后functionTwo通过直接调用实现,一切都有效delegate?.functionOne.但这似乎非常不优雅.
@objc
protocol MyProtocol: class {
func functionOne()
}
button.addTarget(self, action: #selector(MyProtocol.functionOne), for: .touchUpInside)
Run Code Online (Sandbox Code Playgroud)
上述语法并不关心协议的实现位置.它只关心函数的名称及其签名.由于这种行为,我们说MyProtocol.functionOne并且说得足够.某些类符合该类并实现具有该签名和名称的函数.
| 归档时间: |
|
| 查看次数: |
1306 次 |
| 最近记录: |