何时使用UICollectionView而不是UITableView?

wz3*_*366 88 objective-c uitableview ios uicollectionview

我发现这UICollectionView就像UITableView在iOS6 中引入的升级版本,但我什么时候应该选择UICollectionView而不是UITableView

仍然有应用程序使用UITableView,如果UICollectionView可以做任何UITableView事情,为什么人们还在使用UITableView?就性能而言是否存在差异?

谢谢!

Nit*_*hel 71

这取决于要求.应用程序流如何确定要将哪种类型的UI集成到应用程序中.

人们主要使用UICollectionview用于创建具有在网格中显示的多个图像的UI的类型.这将使用复杂的逻辑UITableView,但是UICollectionview,它很容易.

使用时UICollectionview,您无需通过获取所选项目值来设置带有标签或其他内容的按钮.你可以简单地进入-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath和进入UITableViewDelegate:

`-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath`
Run Code Online (Sandbox Code Playgroud)

您将获得所选行而不是项目,因此,为了创建网格或修改的项目,UICollectionview最好使用.

对于每个项目的列表详细信息,人们使用,UITableView因为它显示每个项目的更多信息.

Apple Docs:

UICollectionView类参考

UICollectionView类管理有序的数据项集合,并使用可自定义的布局呈现它们.集合视图提供与表视图相同的常规功能,除了集合视图能够支持的不仅仅是单列布局.集合视图支持可自定义的布局,可用于实现多列网格,平铺布局,圆形布局等等.如果需要,您甚至可以动态更改集合视图的布局.

UITableView类参考

表视图显示单个列中的项列表.UITableView是UIScrollView的子类,它允许用户滚动表,尽管UITableView只允许垂直滚动.包含表的各个项的单元格是UITableViewCell对象; UITableView使用这些对象绘制表格的可见行.单元格具有内容标题和图像 - 并且可以在右边缘附近具有附件视图.标准附件视图是公开指示器或详细公开按钮; 前者导致数据层次结构中的下一级别,后者导致所选项目的详细视图.附件视图也可以是框架控件,例如开关和滑块,或者可以是自定义视图.表视图可以进入编辑模式,用户可以在其中插入,删除和重新排序表的行.

  • 我认为在可扩展性方面 - 收集视图得分更多!! (3认同)

n13*_*n13 42

这是我的标准:

  • 如果UITableView可以使用它,请使用它

  • 如果UITableView需要大量代码才能完成,或者根本无法执行,请使用UICollectionView.

在做出决定之前,您必须考虑对UITableView的限制:它是一个列.而且您只能自定义单元格,而不能自定义截面背景等.因此,如果你有一个没有额外装饰的直接列表 - 看起来像沼泽标准iOS视图,基本上 - 然后使用UITableview.如果您有自定义插入或每个部分周围的边框,请使用UICollectionView.

实际上,我在考虑UICollectionView的只是所有的东西,因为它当你开始展开视图为表视图是非常昂贵的,后来发现它不能做一件事,你需要做的.亲身体验;)

在对两者进行更多经验之后进行编辑:忽略最后一段.UICollectionView需要大量的样板代码才能使其像UITableView一样工作.仅在真正需要时才使用UICollectionView.;)

  • 我一直在寻找的完美答案!这应该投票更多! (2认同)
  • 公开您的个人经历和建议非常有帮助! (2认同)

And*_*ing 29

对于简单列表和前向/后向导航,请使用UITableView.

如果您需要高度可定制性,请使用UICollectionView.

一般来说,在软件开发中,最好选择代表"最简单可能的事情"的方法.


Muh*_*ati 13

根据我的观点,collectionView和tableView之间的主要区别在于

TABLEVIEW - >仅显示一列中的项目列表.

COLLECTION-VIEW - >显示多列中的项目列表.

希望它会对你有所帮助.


Bri*_*Dev 11

如果您选择UITableView for iPhone,请确保首先考虑了您的iPad策略.如果您需要特定于iPad的布局,您可能希望单列布局成为网格.


Chr*_*irk 6

虽然不是必需的,但我总是使用集合视图.这样我就可以很容易地调整我的收藏品的呈现方式以适应不同的分辨率.一个优点是,它可以在将来重构时快速添加新类型的单元格.

我认为没有任何观点.使用集合视图来表示表格非常简单.IMO.


Mat*_*ley 5

根据我个人的经验,这两个要素只能进行松散的比较。

表格视图

TableView 是一个 UI 元素,设计用于以列表格式显示数据。UITableView 具有某些标准功能,例如:

  • 配件视图
  • 单元格选择风格
  • 编辑样式(删除和编辑按钮)。

上述元素增强了以列表格式显示和交互时数据的可用性。比如查看电子邮件。

集合视图

CollectionView 是一个 UI 元素,设计用于使用自定义布局显示内容(通常是列表以外的任何内容)。CollectionViews 改进了以完全定制的布局样式显示数据以及动态更改布局的功能。一些例子是:

  • 水平列表
  • 照片画廊
  • 缩略图视图
  • 旋转木马
  • 表盘
  • 在地图上布置元素
  • ETC。

CollectionViews 还允许多重选择。

结论

从上面可以看出,两者都有完全不同的用例,都是为了增强各自特定数据集的开发和可用性而设计的。

如果您正在考虑通过以下交互以列表样式显示任何内容: - 添加 - 删除 - 重新排序 那么 UITableView 将通过直接提供开箱即用的支持来简化此过程。

除此之外,您应该利用 CollectionView 的优势,因为您拥有更大的灵活性。