Answers:
这取决于要求。应用程序的流程方式决定了将哪种类型的UI集成到应用程序中。
人们主要使用UICollectionview
来创建具有网格中显示的多个图像的UI类型。使用会产生复杂的逻辑UITableView
,但是使用UICollectionview
会很容易。
使用时UICollectionview
,您不需要通过获取所选项目的值来设置带有标签或其他内容的按钮。您可以直接进入-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
和UITableViewDelegate
:
`-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath`
您将获得选定的行而不是项目,因此,对于创建网格或修改的项目,UICollectionview
最好使用。
对于每个项目的列表详细信息,人们会使用UITableView
它,因为它显示了每个项目的更多信息。
苹果文档:
UICollectionView类管理数据项的有序集合,并使用可自定义的布局来呈现它们。集合视图提供与表视图相同的常规功能,除了集合视图不仅可以支持单列布局,还可以支持更多的功能。集合视图支持可自定义的布局,可用于实现多列网格,平铺布局,圆形布局等。如果需要,您甚至可以动态更改集合视图的布局。
表格视图在单个列中显示项目列表。UITableView是UIScrollView的子类,尽管UITableView仅允许垂直滚动,但它允许用户滚动表。组成表格中各个项目的单元格是UITableViewCell对象;UITableView使用这些对象绘制表的可见行。单元具有内容(标题和图像),并且在右边缘附近可以具有附件视图。标准附件视图是公开指示符或详细信息公开按钮。前者导致数据层次结构中的下一个层次,而后者则导致所选项目的详细视图。辅助视图也可以是框架控件,例如开关和滑块,也可以是自定义视图。表格视图可以进入编辑模式,用户可以在其中插入,删除和重新排序表格的行。
这是我的标准:
如果UITableView可以做到,请使用它
如果UITableView需要大量代码来执行或根本无法执行,请使用UICollectionView。
在做出决定之前,您必须考虑对UITableView的限制:这是一列。而且,您只能自定义单元格,而不能自定义章节背景等。因此,如果您有简单明了的东西列表,基本上看起来像是沼泽标准的iOS视图,那么请使用UITableview。如果您有自定义插图或每个部分周围都有边框,请使用UICollectionView。
实际上,我正在考虑将UICollectionView用于所有事情,因为当您开始将视图开发为表视图时,它非常昂贵,后来发现它无法完成您需要做的一件事。第一手经验;)
在对这两者有更多的经验之后进行编辑:忽略最后一段。UICollectionView需要大量样板代码才能使其像UITableView一样工作。仅在确实需要时才使用UICollectionView。;)
对于简单列表和前进/后退导航,请使用 UITableView
。
如果您需要高度的可定制性,请使用 UICollectionView
。
一般来说,在软件开发中,最好选择代表“最简单的事物”的方法。
编辑:从iOS 14开始,UICollectionView
现在也可以执行列表,现在是推荐的方法。有关更多信息和实现细节,请参阅来自WWDC20的本次会议:https : //developer.apple.com/videos/play/wwdc2020/10026/
根据我的观点,collectionView和tableView之间的主要区别是
TABLEVIEW->仅在一列中显示项目列表。
COLLECTION-VIEW->在多列中显示项目列表。
希望对您有帮助。
如果选择iPhone的UITableView,请确保首先考虑了iPad策略。如果需要iPad特定的布局,则可能希望该单列布局成为网格。
尽管不是必需的,但我始终使用collectionview。这样,我可以轻松调整我的收藏集如何针对不同的分辨率呈现。一个优点是,它可以在将来进行重构时快速添加新类型的单元格。
我看不到任何表格视图。使用集合视图表示表非常简单。海事组织。
根据我的个人经验,这两个要素只能比较松散地比较。
表格检视
TableView是一个UI元素,旨在以列表格式显示数据。UITableView具有某些标准功能,例如:
当以列表格式显示和交互时,上述元素增强了数据的可用性。例如查看电子邮件。
集合视图
CollectionView是一个UI元素,旨在使用自定义布局(通常是列表以外的任何内容)显示内容。CollectionViews改进了以完全定制的布局样式显示数据的功能,并且还可以动态地动态更改布局。一些例子是:
CollectionViews还允许多个选择。
结论
从上面的内容中可以看到,这两个案例都有完全不同的用例,旨在增强其特定数据集的开发和可用性。
如果要通过以下交互方式以列表样式显示任何内容:-添加-删除-重新排序然后,UITableView通过直接提供支持来简化此过程。
在其他方面,您应该利用CollectionView的好处,因为它具有更大的灵活性。
两者都取决于要求。表格视图还支持多种编辑方案。在集合视图类中尚未实现此支持。如果要从依赖于这些方法的表视图进行转换,则应在“集合视图”中进行一些额外的繁重工作。集合视图部分标题可以放置在视图内的任何位置。和UITableView不需要通过获取选定项的值来设置带有标签或其他内容的按钮。
实际上,每个人都只需要一个UITableView时就使用我遇到的UICollectionView。“它是一维的。它会上下波动。为什么要为布局和数据添加不必要的委托方法?”。我曾经花了额外的2个小时来帮助一家初创企业找出为什么他们的UICollectionViewCell受到压榨,因为没有阅读动画手册,HIG或UICollectionView指南的所有者决定使用它并添加可变的高度和动画。不用说,他在一个非业务关键的问题上感到头疼,而且浪费了很多时间,他只需使用表格单元格就可以避免,因为没有多余的布局委托+ Nib。
让我说清楚,当您的数据和显示需要它时,我全都是UICollectionView的人。他们非常强大。但是实际上,我见过的大多数人都在列表中使用它们。
这带来了另一个缺陷。它们还用于永远不变的短而恒定的列表。在这种情况下,只需制作一个Xib。或编写一个将它们堆叠的自定义视图。为什么?因为您不需要使用按钮或开关进行5组标签的内存管理。如果它们可能会更改,请使用列表。如果您需要物理学,那么UICollectionView可以很好地配合一些很酷的效果。但是,您是否真的需要添加5个委托方法和5个永远不会移动的标签的布局系统?
另外,我也不会忘记iOS现在也具有本机堆栈视图。即使我非常精通2D和动画系统,也无法使它变形,因此我从不使用内置的系统。
我的意思是定义您的要求。如果您的用户界面没有添加/删除项目并刷新自身,则也许您不需要这些。或者,也许您想编写纸牌游戏并将其虚拟地放在桌子上,然后将UICollectionView与物理系统配合使用以作为其布局指南。
根据我们的要求,我们选择UITableView或UICollection视图。
如果要以网格类型显示图像或项目,或者需要更多可定制性,则可以使用UICollectionview。
为了列出每个项目的详细信息和子细节,我们使用UITableView。
UICollectionView: UICollectionView类管理数据项的有序集合,并使用可自定义的布局显示它们。集合视图提供与表视图相同的常规功能,除了集合视图不仅可以支持单列布局,还可以支持更多的功能。
UITableView:表视图在单个列中显示项目列表。UITableView是UIScrollView的子类,尽管UITableView仅允许垂直滚动,但它允许用户滚动表。
根据我的网格视图显示视图,使用UI集合视图。所有其他列表视图使用UITable视图