collectionView/TableView 部分中没有数据的模式

Posted

技术标签:

【中文标题】collectionView/TableView 部分中没有数据的模式【英文标题】:Pattern for no data in a section in collectionView/TableView 【发布时间】:2015-05-21 07:01:39 【问题描述】:

我正在考虑推荐的方式来显示 collectionView/TableView 中特定部分没有数据的通知

一种方法是创建一个特殊的单元格并将其放入而不是数据单元格。这感觉很奇怪,因为“空通知”单元格与数据不相关,这意味着我需要在 didSelectItem 中传播很多条件、配置单元格等

仅当整个视图为空而不是在特定部分中时,才适合使用https://github.com/dzenbot/DZNEmptyDataSet

另一种方法是(这就是我现在所做的)将 UIView 插入到数据所在的位置作为 collectionview 的子视图,但这在重新加载数据、滚动、点击时也需要维护。这也需要计算视图的放置位置,这意味着我需要为每个集合视图更改它,因为它不是集合视图布局的一部分

是否有推荐的模式来处理这些情况?

【问题讨论】:

为什么不直接省略空白部分呢?这是预期的模式。 用户怎么知道没有数据的原因? 明白了。例如,如果没有联系人的地址信息,则该部分不可见。 对于静态数据是,但对于需要一些用户干预的动态数据,否。如果用户没有输入地址,应用程序必须让他们知道 如果需要地址,应用程序不应让用户在没有地址的情况下保存详细信息。所以,你永远不会有一个空地址的记录。验证发生在保存数据时,而不是在显示数据时。 【参考方案1】:

如果该部分包含空数据,也许您根本不应该拥有该部分。在- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 数据源方法中将节数减1,并在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 数据源方法中重新检查要显示的单元格。

【讨论】:

但是我想告诉用户没有数据,所以她不会奇怪为什么那个视图和其他视图不同【参考方案2】:

在回复您时,我认为您将有某种类型的“添加”按钮来添加 cmets、照片、朋友等。使添加评论或照片的选项比使用整个 tableView 行更不突兀,并省略评论或照片部分,如果没有 cmets 或照片。

如果您在显示详细信息时放置“添加评论”或“添加照片”行,用户可能会厌倦在使用应用程序时不必要地阅读这些内容。

注意tableViews一般处理editing mode中的插入,不编辑时,如果为空则不显示section

【讨论】:

以上是关于collectionView/TableView 部分中没有数据的模式的主要内容,如果未能解决你的问题,请参考以下文章

RxSwift MVVM 表视图/集合视图,用户输入单元表示状态