我有一个包含mapview和tableview的视图,类似于Facebook应用程序看起来如何在Facebook附近的地方屏幕看起来。
我使用界面构建器将屏幕放在一起。我有桌面和地图的出口。并且,我将控制主视图的UIViewController设置为mapview和表视图的委托。一切都很完美。
然而,这个主要的UIViewController现在非常混乱,因为它必须代表它自己的视图,mkmapview和uitableview来响应方法。但是,数据在地图和表格视图之间有所共享。
我想知道这是否是UIViewController包含的来源?或者,如果我应该只使自定义对象充当这两个视图的委托。我正在寻找在现代iOS中使用的正确设计模式。几年前,只需将它们全部混合到同一个控制器中就可以了。也许它仍然是要走的路。
答案 0 :(得分:1)
你的想法都是好主意,但是......
控制器包含通常用于更多与导航相关的目的,例如UINavigationController。
执行某些委托/数据源工作的自定义对象,这也是一个很好的想法,但是他们与视图控制器和彼此共享数据的程度有点笨拙。这可能是一个很好的解决方案,特别是如果其他视图控制器需要相同的委托/数据源行为。
第三种选择,可能是三者中最好的,是创建视图控制器的类扩展(see apple doc here)。这些可以被认为是不同文件中类的一部分。