Swift协议 - 属性类型子类

时间:2015-08-26 16:01:23

标签: ios swift syntax protocols

我定义了一个名为PanelController的协议,我希望在其中存储PanelViewPanelView本身是UIView的子类,定义了面板的基本结构。我有三个不同的视图,它们是PanelView的子类:LeftPanelMidPanelRightPanel。对于每个面板,我想定义一个符合xxxPanelController协议的PanelController(左,中,右)。

我遇到的问题出现在协议和xxxPanelController

protocol PanelController {
    var panelView: PanelView { get set }
    ...
}

class LeftPanelController: UIViewController, PanelController {
    var panelView = LeftPanelView()
    ...
}

,其中

class LeftPanelView: PanelView {
     ...
}

和(最后一件......)

class PanelView: UIView {
    ...
}

我收到错误消息:LeftPanelController does not conform to protocol PanelController原因显而易见:panelView的类型为LeftPanelView而不是PanelView。这似乎真的仅限于我,因为LeftPanelViewPanelView的子类,所以它应该正常工作!但它并没有!

有人可以向我解释为什么会这样,如果有人能想出一个,可能的解决方法吗?谢谢!

0 个答案:

没有答案