我基本上有两个视图控制器。它们都可以与另一个控制器/管理器一起使用。我希望这个管理器对于两个控制器完全相同。因此,两个控制器都应该引用相同的管理器/控制器。还有一个使用经理的第三类。
起初我以为我可以将管理器/控制器继承到两个视图控制器。但斯威夫特不允许这样做。那么,我怎么能实现这个想法呢?
所有这一切都是这笔交易:
我有这四个课程:
FirstViewController(继承UIViewController)
SecondViewController(Inherits UIVIewController)
EventController(尚未继承)
MapManager(不包含任何内容)
firstviewcontroller,secondviewcontroller和MapManager需要使用EventController中的函数/属性。
我现在拥有的:
首先,SecondViewcontrollers和MapManager继承自UIViewController类型的EventController。然而,在map manager类中,EventController的属性无法正常工作(例如:填充数组为空)
答案 0 :(得分:0)
如果您有2个或更多具有共同行为的UIViewController
(或类似),您可以创建一个继承自BaseViewController
的基类UIViewController
,然后使您的专用视图控制器继承从它
UIViewController
|
BaseViewController
| |
ViewController1 ViewController2
如果方程中涉及另一个类,则该解决方案不起作用。像许多现代语言一样,Swift仅支持单继承。
为简单起见,请拨打附加班级"经理"。我看到了3种替代解决方案:
在基本视图控制器中创建一个管理器实例(作为属性),并通过包装器方法公开其接口(即为管理器创建协议,在基本视图控制器中实现它,实现简单将请求转发给经理实例)
在基本视图控制器中创建一个管理器实例(作为属性),并使其可供子类访问
删除管理器类并将其代码合并到基本视图控制器
这份清单当然不是详尽无遗的。这个论点过于宽泛,无法提供有针对性的建议,而且在任何情况下都没有解决办法。