我想要一个自定义的、可重复使用的子视图,它可以了解模型和生命周期事件
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 范例中,视图不应该知道模型的任何信息。在不知道更多关于你在做什么的情况下,我想说你可以做的一件事是创建一个基本视图控制器类,你的其他控制器继承自该类以减少重复代码的数量。由于控制器在模型和视图之间进行调解,因此您应该让控制器根据模型告诉视图显示或隐藏它的哪些子视图。
【讨论】:
以上是关于我想要一个自定义的、可重复使用的子视图,它可以了解模型和生命周期事件的主要内容,如果未能解决你的问题,请参考以下文章
表格视图可重复使用的自调整大小的单元格,具有不断变化的子视图