我有一个数据源和一个委托协议,我用它来扩展UIViewController。
在一个简单的类中,我添加了一个数据源并委托为出口
@objc protocol TestDataSource {
}
@objc protocol TestDelegate {
}
extension UIViewController: TestDataSource, TestDelegate {
}
class OutletTest: NSObject {
@IBOutlet var dataSource: TestDataSource?
@IBOutlet var delegate: TestDelegate?
}
我使用UIViewController进行了扩展,因为我想将对象添加到视图控制器底座并将出口连接到视图控制器,如下所示
我可以看到IB认可这些网点,但现在我遇到了问题。当我尝试将视图控制器连接为我的数据源和委托时,我只能选择连接数据源
奇怪的是,如果我在UIViewController扩展中颠倒我的数据源和委托的顺序,我只能将委托作为选项
extension UIViewController: TestDelegate, TestDataSource {
}
解决方法 我有一个涉及第三个协议的解决方法,它结合了前两个
@objc protocol TestDataSource {
}
@objc protocol TestDelegate {
}
@objc protocol CombinedProtocol: TestDelegate, TestDataSource {
}
extension UIViewController: CombinedProtocol {
}
class OutletTest: NSObject {
@IBOutlet var dataSource: CombinedProtocol?
@IBOutlet var delegate: CombinedProtocol?
}
这样做可以让我选择连接两个插座,但它看起来很乱,而且有点危险。
这看起来像Xcode / IB中的错误,还是有原因?