在Interface Builder中无法将CustomView声明为@IBOutlet的委托属性连接到ViewController–根本无法建立连接。
CustomView
ViewController
这是代码
class CustomView: UIView { @IBOutlet var delegate: CustomViewDelegate? } @objc protocol CustomViewDelegate { ... } class ViewController: UIViewController, CustomViewDelegate { ... }
@objc由于使用了快速协议,因此IBOutlet属性不能具有非对象类型,不知道为什么protocol CustomViewDelegate: class {}不起作用。
@objc
protocol CustomViewDelegate: class {}
还有其他人遇到过这样的事情吗?
从Xcode发行说明中:
当插座的类型是协议时,Interface Builder不支持连接到Swift文件中的插座。 解决方法:将插座的类型声明为AnyObject或NSObject,使用Interface Builder将对象连接到插座,然后将插座的类型更改回协议。
当插座的类型是协议时,Interface Builder不支持连接到Swift文件中的插座。
解决方法:将插座的类型声明为AnyObject或NSObject,使用Interface Builder将对象连接到插座,然后将插座的类型更改回协议。
编辑: Xcode 9 beta 3发行说明说,此替代方法应该不再是必需的。