Я определяю протокол под названием 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
, поэтому он должен просто работать! Но это не так!
Может кто-нибудь объяснить мне, почему это так, и если кто-нибудь может придумать один из возможных способов обхода? Спасибо!