问题描述
无法将声明为@IBOutlet的 CustomView
的委托属性连接到Interface Builder中的 ViewController
- 只需'建立连接。
Can't connect delegate property of CustomView
declared as @IBOutlet toViewController
in Interface Builder – simply can't establish a connection.
这是代码
class CustomView: UIView {
@IBOutlet var delegate: CustomViewDelegate?
}
@objc protocol CustomViewDelegate {
...
}
class ViewController: UIViewController, CustomViewDelegate {
...
}
@objc 使用code>是因为,不知道为什么
协议CustomViewDelegate:class {}
不起作用。
@objc
is used because of swift protocol, IBOutlet property cannot have non-object type, don't know why protocol CustomViewDelegate: class {}
doesn't work.
其他人遇到过类似的事情吗?
Anyone else came across something like that?
推荐答案
来自Xcode发行说明:
From the Xcode release notes:
解决方法:将插座的类型声明为AnyObject或NSObject,使用Interface Builder将对象连接到插座,然后将插座的类型更改回pr协议。
Workaround: Declare the outlet's type as AnyObject or NSObject, connect objects to the outlet using Interface Builder, then change the outlet's type back to the protocol.
编辑: Xcode 9 beta 3发行说明说不再需要这种解决方法。
Xcode 9 beta 3 release notes say that this workaround should no longer be necessary.
这篇关于Interface Builder,@ IBOutlet和Swift中的delegate和dataSource协议的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!