Я определяю протокол под названием PanelController, в котором я хотел бы сохранить PanelView. PanelView сам является подклассом UIView и определяет основную структуру панели. У меня есть три разных представления, что подкласс PanelView: LeftPanel, MidPanel и RightPanel. Для каждой из этих панелей я хотел бы определить 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 not PanelView. Это кажется мне действительно ограниченным, потому что LeftPanelView является подклассом PanelView, поэтому он должен просто работать! Но это не так!
Может кто-нибудь объяснить мне, почему это так, и если кто-нибудь может придумать один из возможных способов обхода? Спасибо!