我想要一个自定义的、可重复使用的子视图,它可以了解模型和生命周期事件

Posted

技术标签:

【中文标题】我想要一个自定义的、可重复使用的子视图,它可以了解模型和生命周期事件【英文标题】:I would like a custom, resuable subview that can know about the model and lifecycle events 【发布时间】:2013-12-11 14:50:38 【问题描述】:

我来自 ASP.NET 背景,所以我不确定在 ios 中是否有办法做到这一点。本质上,我们的应用程序中有一个设计范例,您可以在模型中拥有单个项目或多个项目。根据哪一个,隐藏/显示不同的子视图。

我已经创建了一个继承自 UIView 的自定义子视图,它在委托的帮助下处理此问题,以从 ViewController 获取一些信息。我已经在多个屏幕上实现了它,效果很好。但是,单独的视图控制器正在复制大量代码,例如何时更新模型,更新模型时要做什么等。本质上,视图控制器应该做的事情。将这段代码保存在一个地方而不是不同的 ViewController 会很棒。

我知道我可以让我的自定义子视图的类继承自 UIViewController,但我还需要能够在可重用视图之上或之下拥有其他视图。我有什么选择?在 ASP.NET 中,您只需创建一个了解页面生命周期并了解模型的用户控件。

【问题讨论】:

处理多项的常用数据结构是数组,但您知道您也可以将单个项视为只有一项的数组吗?这消除了重复逻辑和单独视图的需要。 【参考方案1】:

“我知道我可以让我的自定义子视图的类继承自 UIViewController”——不,你不能这样做。视图不能从 UIViewController 继承,并且在 Apple 的 MVC 范例中,视图不应该知道模型的任何信息。在不知道更多关于你在做什么的情况下,我想说你可以做的一件事是创建一个基本视图控制器类,你的其他控制器继承自该类以减少重复代码的数量。由于控制器在模型和视图之间进行调解,因此您应该让控制器根据模型告诉视图显示或隐藏它的哪些子视图。

【讨论】:

以上是关于我想要一个自定义的、可重复使用的子视图,它可以了解模型和生命周期事件的主要内容,如果未能解决你的问题,请参考以下文章

表格视图可重复使用的自调整大小的单元格,具有不断变化的子视图

monotouch - 可重用的 iOS 自定义视图

将多个视图合并到自定义视图中

来自 XIB 的自定义 UIView 加载具有巨大规模的子视图

如何自定义仅支持横向模式的子视图

在 UIView 子类的子视图内绘图