子类化UIView的正确基本原理是什么?

问题描述:

我的意思是符合OOP和MVC。子类化UIView的正确基本原理是什么?

具体来说,我已经计划了一个UIView XIB文件,它有很多动态更新的UILabel,每当用户选择一些内容时都会更改:两个时间戳,两个持续时间和两个名称。这是用户看到的界面的“标题”部分。

我看到几个选项 1.在视图控制器中创建所有内容,将UIView作为子视图添加到主视图,并使用属性跟踪UILabel子视图。但是这迫使我为视图控制器添加了很多属性。 2.子类UIView并添加UILabels作为UIView的属性,从而保持控制器“更清洁”。 3.使用XIB文件(但让我们假设我想以编程方式执行此操作)。我在问这个,因为我不断得到UIView应该被分类为“自定义绘图”的印象,而我的理由更多地沿着“保持我的控制器清洁而没有6 UILabel属性”这一句。

+1

根据UILabels的性质,您可能需要考虑使用数组或字典来存储它们,而不是将它们作为属性单独存在。 – john 2011-12-24 10:01:07

不要继承UIView这个。您应该将uIView子类化为自定义绘图,或者在某些情况下对触摸进行自定义处理(但通常有更好的方法来处理触摸)。

把所有东西放在你的视图控制器和子类UIView不是唯一的选择。您可以创建一个类来管理组成标题的视图组。它在概念上将是一个视图控制器,但您不会继承UIViewController,只是继承自NSObject。

+0

谢谢。我认为这似乎是这种情况,虽然很难在SO上找到它,但它似乎都指向“自定义绘图或自定义触摸处理”作为子类UIView的唯一原因,即使在线上有这么多示例用它来整合观点。 – Louis 2011-12-25 07:21:57

我个人认为,我会将UILabels作为UIView的属性,所以选项2.然后,您可以通过控制器轻松地从视图访问它们。

这也给你从视图到任何控制器的可重用性的优势,因为dealloc将摆脱那些来自UIView,你只担心清理一次!