4

我将在 IOS 中设计一个组件,其中我们将有 Table view 和 Grid View;意味着用户可以在表格或网格中查看他的数据。所以我正在做的是我添加了一个 UIViewController 并添加了两个子视图控制器,一个用于表,另一个用于集合视图。我只使用 UIViewController 处理所有事情。这意味着当用户想要使用我的组件时,他只能添加为子视图控制器。我的问题是“像我一样使用 UIViewController 是最佳做法,还是应该将所有内容都转换为 UIView,因为 UIView 重量轻。” 我将只在我的组件中编写表示逻辑。我们将使用委托从外部获取数据。如果我应该使用 UIView,那么我应该什么时候使用 UIViewController?

谢谢

4

3 回答 3

6

你目前的做法是正确的。

UIViews 应该只做一件事:在被要求时绘制视图。

UIViewControllers 更复杂。他们负责使用完成工作所需的任何数据设置视图,在需要时将多个视图(或视图控制器)组合在一起,响应来自视图组件或一般设备的事件,并与其余的代码/系统。

因为您的代码想要显示两种不同的信息,所以它比普通的 UIView 样式更适合 UIViewController。

正如您所指出的,Apple 自己有许多 UIView 子类的示例,它们具有委托并执行复杂的操作。但是,如果您正在编写一个新组件并且它很复杂(就像您的组件一样),我强烈建议您使用 UIViewController 方法。

关于历史的注释: Apple 曾经建议 UIViewControllers 应该只显示/合成 UIViews 而不是其他 UIViewControllers(尽管令人困惑的是,他们并不总是遵循自己的建议!)。这将与他们制作一些相当复杂的 UIView 子类保持一致。然而,他们不久前改变了这种立场,并增加了对 UIViewControllers 的支持,以便在其中合成其他 UIViewControllers 的视图。如果Apple的立场一直是现在,你可能会发现他们的一些UIView子类被实现为UIViewControllers!

作为一个实验,尝试以两种方式实现你的组件可能会很有教育意义。我预测您会发现 UIView 方法更加笨拙,因为您必须手动重新探测一些使用 UIViewController 方法“免费”获得的“接线”。

于 2013-10-25T07:31:58.493 回答
1

避免将逻辑放在 UIView 子类中。

于 2013-10-25T07:21:36.460 回答
0

我认为您可以通过使用表格视图来制作网格视图,只需在每个单元格上添加多个视图

在切换网格到列表或列表到网格时,只需检查您的类型并重新加载 tableview

于 2013-10-25T07:17:26.953 回答