基于协议的IBOutlets快速,麻烦连接

时间:2015-11-04 09:38:10

标签: ios swift interface-builder uistoryboard iboutlet

我有一个数据源和一个委托协议,我用它来扩展UIViewController。

在一个简单的类中,我添加了一个数据源并委托为出口

@objc protocol TestDataSource {
}

@objc protocol TestDelegate {
}

extension UIViewController: TestDataSource, TestDelegate {
}

class OutletTest: NSObject {
    @IBOutlet var dataSource: TestDataSource?
    @IBOutlet var delegate: TestDelegate?
}

我使用UIViewController进行了扩展,因为我想将对象添加到视图控制器底座并将出口连接到视图控制器,如下所示

enter image description here

我可以看到IB认可这些网点,但现在我遇到了问题。当我尝试将视图控制器连接为我的数据源和委托时,我只能选择连接数据源

enter image description here

奇怪的是,如果我在UIViewController扩展中颠倒我的数据源和委托的顺序,我只能将委托作为选项

extension UIViewController: TestDelegate, TestDataSource {
}

enter image description here

解决方法 我有一个涉及第三个协议的解决方法,它结合了前两个

@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?
}

这样做可以让我选择连接两个插座,但它看起来很乱,而且有点危险。

enter image description here

这看起来像Xcode / IB中的错误,还是有原因?

0 个答案:

没有答案