子类化UIView的正确理由是什么?

时间:2011-12-24 09:51:49

标签: iphone model-view-controller uiview

我的意思是这符合OOP和MVC。

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

我看到了一些选择 1.在视图控制器中创建所有内容,将UIView作为子视图添加到主视图中,并使用属性跟踪UILabel子视图。但这迫使我向视图控制器添加了很多属性。 2.子类UIView并添加UILabels作为UIView的属性,从而使控制器“更清洁”。 3.使用XIB文件(但我们假设我想以编程方式执行此操作)。

我问这个是因为我不断得到UIView应该被子类化为“自定义绘图”的印象,而我的理由更像是“让我的控制器清洁而没有6个UILabel属性。”

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

在我个人看来,我会将UILabels作为UIView的属性,因此选项2.您可以通过控制器轻松地从视图中访问它们。

这也为您提供从视图到任何控制器的可重用性的优势,并且由于dealloc将摆脱UIView中的那些,您只需要担心清理一次!