iOS,用于在自定义子视图中调整内容属性的模式

iOS,用于在自定义子视图中调整内容属性的模式,ios,objective-c,Ios,Objective C,当您有某种模型对象,并且其上的各种属性被多个视图和(自定义)子视图修改时,处理这种情况的既定方法是什么 子视图是否应该有对其容器的引用(我不知道iOS是否保留这样的引用,但如果需要,我可以设置一个),其中包含内容,并对其进行修改 应该尽可能少的视图具有指向内容的指针,并且子视图可以向其容器发送messagea来修改内容吗 还有别的吗?我知道我可以一起解决一些问题,但我需要一个合适的设计模式。通常的MVC方式是使用一个控制器对象在视图和模型之间进行调解 您将有一个viewController来管理

当您有某种模型对象,并且其上的各种属性被多个视图和(自定义)子视图修改时,处理这种情况的既定方法是什么

子视图是否应该有对其容器的引用(我不知道iOS是否保留这样的引用,但如果需要,我可以设置一个),其中包含内容,并对其进行修改

应该尽可能少的视图具有指向内容的指针,并且子视图可以向其容器发送messagea来修改内容吗


还有别的吗?我知道我可以一起解决一些问题,但我需要一个合适的设计模式。

通常的MVC方式是使用一个控制器对象在视图和模型之间进行调解

您将有一个viewController来管理视图层次结构的每个屏幕,还有一个单独的模型对象,每个viewController都会更新该对象

所有视图或子视图都没有指向模型的指针。从视图或子视图中获取数据的常用方法是通过委派或-如果您的视图是UIControl子类-目标/操作。委托(或操作方法的位置)将是视图控制器。视图不应该知道模型,反之亦然


如果您希望在应用程序的整个生命周期中都有一个持久化的模型对象,并从各种视图控制器进行更新,那么您很可能希望使用单例模式——也请参阅这里关于单例(全局可访问对象)的大量问答。

+1 thanx,我最后选择了视图问题的委托模式。您是说,当某些内容发生更改时,不希望向childview发送消息来配置自身吗?相反,该视图的视图控制器应该进入并配置子视图?是的,最好由视图控制器来管理,尽管实际答案将取决于设计细节。例如,什么样的变化?在哪里发起的?如果一个视图要与其子视图直接通信,那么它更改的数据来自哪里?您可能最终会将视图与其子视图紧密耦合,因此只有在构建可重用的自定义小部件(如自定义控件对象)时才有意义。@hvgotcodes-阅读您的其他问题和解决方案时,您似乎正在尝试创建一个具有自己的xib的可重用控件对象。我正在做类似的事情,在这种情况下,外部视图在其子视图中扮演控制器的角色似乎是合理的,因为自定义对象需要一个单一的接触点(公共接口)。我有点不确定为什么会被否决。。。。