用于自定义视图的iOS控制器

用于自定义视图的iOS控制器,ios,uiviewcontroller,separation-of-concerns,Ios,Uiviewcontroller,Separation Of Concerns,我完全支持创建轻量级视图控制器(可测试性、关注点分离等),但是,在某些情况下,我无法找到合理的解决方案或模式 一种非常常见的情况(有很多例子)是将视图控制器与tableview的委托和数据源分离;我明白了,这完全有道理。但是,如果一个视图控制器可能包含多个复杂程度不同的自定义视图,该怎么办?控制这些视图的责任是什么?当然不仅仅是父视图控制器 我倾向于认为“UIViewController”更像是一个与UI框架及其事件紧密耦合的屏幕控制器;它没有控制一个特定视图的单一责任。为了进一步说明我的观点,

我完全支持创建轻量级视图控制器(可测试性、关注点分离等),但是,在某些情况下,我无法找到合理的解决方案或模式

一种非常常见的情况(有很多例子)是将视图控制器与tableview的委托和数据源分离;我明白了,这完全有道理。但是,如果一个视图控制器可能包含多个复杂程度不同的自定义视图,该怎么办?控制这些视图的责任是什么?当然不仅仅是父视图控制器

我倾向于认为“UIViewController”更像是一个与UI框架及其事件紧密耦合的屏幕控制器;它没有控制一个特定视图的单一责任。为了进一步说明我的观点,假设一个tableview有两个不同的原型单元——其中一些单元相当复杂,例如可能需要网络访问——应该如何管理?当然,没有一个视图控制器、数据源或委托可以充当所有这些单元的“控制器”?许多逻辑/职责不属于单元视图本身,因此需要在某个地方进行委派

我想到的一个选择是只创建控制器对象(NSObject的子类),作为我创建的自定义视图的“视图控制器”,例如复杂tableview单元格的控制器对象——它的唯一职责是管理一个特定视图。tableview单元格然后委托给控制器对象,然后(如果需要)委托回父UIViewController。虽然这会起作用并有助于分离关注点,但随着所有授权层的进行,它开始感到有点尴尬

有没有人对处理这些场景有什么好的建议,或者知道有哪些好的代码示例演示了这一点

谢谢