问题标签 [uicollectionviewdiffabledatasource]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
86 浏览

swift - UITableViewDiffableDataSource 和 UICollectionViewDiffableDataSource 在使用 class 与 struct 时工作方式不同

我注意到,在使用UITableViewDiffableDataSource/时UICollectionViewDiffableDataSource,ItemIdentifierType

使用时

whenStringCellObject是一个类,甚至不调用 Hashable 函数,并且对象始终被视为已更改(即使值相同)

当我将类更改为结构时

我得到了正确的行为

为什么在使用类时行为会发生变化以及如何获得预期的行为?

0 投票
1 回答
497 浏览

ios - Crash number of items in section 0 when there are only 0 sections in the collection view

I want to learn using UICollectionViewDiffableDataSource using Pinterest Layout, but when I try to running my simulator. it crash and give me a message

request for number of items in section 0 when there are only 0 sections in the collection view

I did the Pinterest layout using raywenderlich tutorial , when I stumble in google the problem cause is the Pinterest layout. but before I use the diffableDataSource it works fine, but after using diffableDataSource it crash. where do I do wrong? can you help me, this is my code for diffableDataSource

0 投票
1 回答
581 浏览

ios - 崩溃提供的标识符不是唯一的

我有一个 searchController,当我尝试删除 searchController 中的文本时,它会崩溃消息。

提供的标识符不是唯一的

我尝试使用像这样的哈希函数来修复它,并使我的模型可散列和相等。但仍然无法解决问题,请帮助。这是我的代码,如果我的代码中有不清楚的地方。随时提及我,我会更新它:)

0 投票
0 回答
225 浏览

ios - UICollectionViewCompositionalLayout 正交部分 willDisplayCell 分析

我正在使用集合视图组合布局,并且需要对正交滚动部分的“userViewedCell”事件进行准确分析。我一直在使用 collectionView(willDisplay:forItemAt) 来检测何时将显示单元格,但这似乎非常有问题。

为了演示这个问题,这里是集合视图组合布局的 Apple 示例项目:https ://developer.apple.com/documentation/uikit/views_and_controls/collection_views/using_collection_view_compositional_layouts_and_diffable_data_sources

组合布局.gif

我对 Apple 代码所做的唯一更改是添加此功能:

当我滚动一个正交部分时,将调用 willDisplayCell 以获取其他正交部分中的单元格。例如,我将第 0 节滚动到第 10 单元格,并且 willDisplayCell 被调用以用于 [0, 10]、[1, 10] 和 [2, 10],即使第 1 节和第 2 节仅显示前几个单元格。

一个相关的问题是,当我将第 0 部分一直滚动到开头时,将永远不会为 [0, 0]、[0, 1] 或 [0, 2] 调用 willDisplayCell。

如何解决此问题以获得准确的分析?还是我应该使用其他方法?

0 投票
1 回答
89 浏览

ios - 在 iOS 中更新 UICollectionViewDiffableDataSource 中的模型变量的正确方法

我正在开发一个应用程序UICollectionViewDiffableDataSource。一切都像魅力一样,事实上,collectionView当我添加新模型时,我已经自动更新了。但是,当我更新我现有的元素之一时,我无法看到更新的单元格。

这是一个例子:

我有这个模型

这填充了我的UICollectionView. 如果我尝试在 上更新它的名称didSelectItem,然后调用我的分析差异的函数NSDiffableDataSourceSnapshot,它不会更新我的UICollectionView. 如果我Contact在 didSelect 上添加另一个(仅用于测试),我会UICollectionView根据需要完美更新。

0 投票
2 回答
599 浏览

ios - UICollectionViewDiffableDataSource 正在替换数据而不是更新

我试图理解UICollectionViewDiffableDataSourceNSDiffableDataSourceSnapshot

我在下面创建了一个非常粗略的版本。基本上在加载时它应该获取照片。

点击导航栏中的按钮,它会获取下一页。然而,这只是替换现有数据,我期望它将值附加到数组中。

请问我应该如何更新我的数据而不是替换它?

0 投票
1 回答
235 浏览

ios13 - ios 14 中的 UICollectionViewCompositionalLayout 中的弹性标题?

如何覆盖 UICollectionViewCompositionalLayout 中的 layoutAttributesForElements ?

0 投票
1 回答
425 浏览

ios - UICollectionViewDiffableDataSource 崩溃:无效参数不满足:itemCount

我正在使用 UICollectionView 和 UICollectionViewDiffableDataSource 并异步和同步地获取数据以填充视图。应用程序崩溃并显示以下消息:“由于未捕获的异常‘NSInternalInconsistencyException’而终止应用程序,原因:‘无效参数不满足:itemCount’。”

我相信这与同步和异步数据获取的组合有关,因为当我实现其中一个或另一个时,应用程序按预期运行。

代码的简单版本如下:

带有堆栈跟踪的调试器输出:

0 投票
1 回答
797 浏览

ios - Diffable 数据源 - 重新加载标题

UICollectionViewDiffableDataSource可以重新加载标头的方式有哪些?

我有一个带有显示用户详细信息的标题和显示帖子的行的集合视图,模型是

当我通过快照更改属性时

行重新加载,但补充标题不会。我可以更改标题的唯一方法是,如果我将 Section 作为模型的一部分,那么:

我的应用快照现在变成

然后我分别设置用户

并且标题重新加载。

我不太明白为什么当我在 postUsers 中更改某些内容时,行会重新加载,但标题不会 - 直到我将模型作为部分的一部分实现?

我确实知道 diffable 可以用于散列,因此当我更改属性时,表会重新加载,但感觉标题也应该重新加载,但它是单独处理的吗?

0 投票
1 回答
181 浏览

ios - DiffableDataSource CollectionView 在部分中不返回任何项目

这是我的课:

所以设置是有两个部分,记录和时间线。它们都由相同的数据运行 - 记录数组。目前,当我每次应用快照时,我都在从类中复制这个数组——我不确定出于某种原因使用同一个数组是不好的..

然后在设置数据源时,对于 cellProvider,我有一个 switch 语句来检查该部分。如果它的第 0 部分我将使用一个记录单元,如果它的第 1 部分我将使用一个时间线单元。

目前没有生产记录单元。当我检查collectionView.numberOfItems(inSection:0)它的 0. collectionView.numberOfItems(inSection:1)是 4 (记录的数量)

为什么两个部分都不是4?我怎样才能做到这一点?