何时使用UICollectionView而不是UITableView?

时间:2014-04-15 08:52:43

标签: ios objective-c uitableview uicollectionview

我发现UICollectionView类似于iOS6中引入的UITableView的升级版本,但我应该何时选择UICollectionView而不是UITableView

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

谢谢!

14 个答案:

答案 0 :(得分:68)

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

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

使用UICollectionview时,您无需通过获取所选项目值来设置带标签或其他内容的按钮。您只需获取-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPathUITableViewDelegate

即可
`-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath`

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

对于每件商品的商品详情,人们会使用UITableView,因为它会显示每件商品的更多信息。

Apple文档:

UICollectionView Class Reference

  

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

UITableView Class Reference

  

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

答案 1 :(得分:37)

这是我的标准:

  • 如果UITableView可以这样做,请使用

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

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

我实际上考虑所有事情的UICollectionView只是因为当你开始以桌面视图开发视图时它非常昂贵,后来发现它不能做那个你需要它做的事情。第一手经验;)

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

答案 2 :(得分:29)

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

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

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

答案 3 :(得分:11)

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

  

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

     

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

希望它会对你有所帮助。

答案 4 :(得分:11)

如果您选择适用于iPhone的UITableView,请务必先考虑您的iPad策略。如果您需要特定于iPad的布局,您可能希望单列布局成为网格。

答案 5 :(得分:6)

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

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

答案 6 :(得分:4)

它完全取决于您的数据显示方式。 如上面许多人所提到的,如果您只需要一组数据并且也不复杂,请转到UITableView,否则请使用UICollectionView

UICollectionView是自定义友好的。

如果您处理多个单元格高度左右,请转到UICollectionView

答案 7 :(得分:3)

根据我个人的经验,这两个要素应该只是松散地比较。

<强>的TableView

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

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

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

<强>的CollectionView

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

  • Horizo​​nal Lists
  • 照片画廊
  • 缩略图视图
  • 转盘
  • 拨号
  • 在地图上布置元素

CollectionViews还允许多项选择。

<强>结论

从上面可以看出,两者具有完全不同的用例,旨在增强其特定数据集的开发和可用性。

如果您正在查看以列表样式显示任何内容以及以下互动: - 添加 - 删除 - 重新订购 然后,UITableView将通过提供开箱即用的支持来简化此过程。

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

答案 8 :(得分:2)

两者都取决于要求。表视图还支持各种编辑方案。此支持尚未在Collection View类中实现。 如果要从依赖于这些方法的表视图进行转换,则希望在集合视图中进行一些额外的繁重操作。 集合视图节标题可以放在视图中的任何位置。 并且UITableView不需要通过获取所选项目值来设置带有标签或其他内容的按钮。

答案 9 :(得分:0)

根据我们的需要,我们选择TableView或CollectionView。

示例:

  

对于手机通讯录,tableView是最佳选择。

     

对于照片库,集合视图将是最佳选择。

答案 10 :(得分:0)

我在当前的项目中遇到过这个问题。使用哪种。就我而言,它真的很简单。我需要两个。我需要我的视图看起来像UITableView,也需要更改其更改/布局。因此,使用了UICollectionView。我也在任何地方都使用UITableView,我不需要任何额外的自定义。由于UiTableView带有包含图像和文本的默认布局 - 我使用它来简化。

答案 11 :(得分:0)

根据我们的要求,我们选择UITableView或UICollection视图。

如果我们想要以网格类型显示图像或项目,或者我们需要更多可定制性,我们使用UICollectionview。

为了列出包含详细信息和子细节的每个项目,我们使用UITableView。

<强> UICollectionView:   UICollectionView类管理有序的数据项集合,并使用可自定义的布局呈现它们。集合视图提供与表视图相同的常规功能,除了集合视图能够支持的不仅仅是单列布局。

UITableView:表格视图显示单个列中的项目列表。 UITableView是UIScrollView的子类,它允许用户滚动表,尽管UITableView只允许垂直滚动。

答案 12 :(得分:0)

根据我对网格视图显示的视图使用UI集合视图。所有其他列表视图使用UITable视图

答案 13 :(得分:0)

我个人认为UICollectionView可以完成UITableview可以完成的大部分工作。好吧,与此同时,使用起来更复杂。

我建议您将UICollectionView用作TableView,以防万一您的经理将来更改要求。