子类化 UIView 是处理未知数量的这些自定义对象的正确方法吗?

Is subclassing UIView the right way to go about an unknown number of these custom objects?

我的应用程序中有一个屏幕,它从我的用户对象中提取一个未知大小的数组,并且必须为数组中的每个项目显示一个对象,该对象由我的背景图像的 UIImageView 和 [=22 的 UISwitch 组成=] 那个特定的项目,一个带有项目名称的标签,以及一个对应于项目名称的标签。

这些显示在 UIScrollView 中,因为几乎总是有比屏幕上容纳的更多的项目,尤其是在 iPhone 4.

我最初快速拼凑了一个由 20 个这样的对象组成的静态屏幕,但发现我经常会超过数组中项目的数量,并且需要转换为动态解决方案。

我还没有使用过子类化,想在深入实施之前确保这是正确的解决方案。将一个子类添加到我的 scrollView 听起来比单独添加每个组件并计算各种屏幕的间距要干净得多。

如果这是正确的解决方案,您是否可以向我指出任何资源以了解如何正确执行此子类化?即,如何为我可以添加标签内容和开关状态的对象添加构造函数,并以编程方式添加约束。我只使用了情节提要中的约束。

如果您认为子类化 UIView 不是执行此操作的正确方法,您会建议其他什么解决方案?诚然,在 iOS 开发方面,我是一个新手,所以我很抱歉,这个 post 寻求关于从哪里开始的建议,而不是帮助修复实施的特定部分。

您应该为此使用 UITableViewUICollectionView,并使用 UITableViewCell 或 UICollectionViewCell 的子类来创建您的自定义视图层次结构。 UITableViewUICollectionView 将处理单元格的重用,这将有助于内存管理。

更新: 因为你想使用 UITableView 所以要在单元格之间添加间距,将部分的数量设置为元素的数量,然后为部分添加 header 并设置它的高度,你可以通过实施 UITableViewDelegates 访问来做到这一点有关 UITableViewUITableViewDelegates 的详细信息,请参见以下链接 https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableView_Class/

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewDelegate_Protocol/