小编典典

Swift中的Interface Builder,@ IBOutlet以及委托和dataSource的协议

swift

在Interface
Builder中无法将CustomView声明为@IBOutlet的委托属性连接到ViewController–根本无法建立连接。

这是代码

class CustomView: UIView {
     @IBOutlet var delegate: CustomViewDelegate?
}

@objc protocol CustomViewDelegate {
     ...
}


class ViewController: UIViewController, CustomViewDelegate {
     ...
}

@objc由于使用了快速协议,因此IBOutlet属性不能具有非对象类型,不知道为什么protocol CustomViewDelegate: class {}不起作用。

还有其他人遇到过这样的事情吗?


阅读 287

收藏
2020-07-07

共1个答案

小编典典

从Xcode发行说明中:

当插座的类型是协议时,Interface Builder不支持连接到Swift文件中的插座。

解决方法:将插座的类型声明为AnyObject或NSObject,使用Interface Builder将对象连接到插座,然后将插座的类型更改回协议。

编辑: Xcode 9 beta 3发行说明说,此替代方法应该不再是必需的。

2020-07-07