问题标签 [uitableviewdiffabledatasource]

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 回答
1223 浏览

swift - 支持 iOS 12 和 13 时的 UITableView 和 Diffable 数据源

我在我的项目中实现了 UITableView Diffable Datasource。它在 IOS 13 中运行良好。当我在 iOS 13 版本以下运行此应用程序时,它会警告我它仅在 ios 13 上可用。所以我正在尝试为低于 iOS 13 的版本实现 UITableView。

UITableView 代码已完成,但我在 iOS 13 上遇到了这个问题。

在这里,我声明数据源变量

初始化数据源和快照

我在声明数据源时遇到此错误,请帮助谢谢。

我在collectionview上也面临同样的问题。

0 投票
1 回答
330 浏览

swift - 不同对象的 UITableViewDiffableDataSource 和 NSDiffableDataSourceSnapshot 只显示一行

我已经使用和喜欢实现了 UITableViewUITableViewDiffableDataSourceNSDiffableDataSourceSnapshot

在段更改时,更新 Wrapper 类型的数据。但问题是每次只显示一条记录。

感谢任何帮助,谢谢

0 投票
0 回答
159 浏览

swift - 使用 UITableViewDiffableDataSource 使用分页和下拉刷新

我有UITableViewController它支持分页和拉刷新。

我试图了解正确的处理方式

  1. 替换所有数据 -拉动刷新
  2. 追加新项目 -分页

我有一个如下所示的更新方法。

当数据从拉取刷新或第一次加载时,refresh标志为true并且在分页更新时为false

我不确定这是否正确。

我正在刷新、附加部分、添加项目和应用时创建一个新的空快照。

在分页时,我正在抓取现有的数据源快照并将我的项目添加到末尾。

这是正确使用dataSource.snapshot()还是实际上可以每次都简单地附加到空快照?

0 投票
1 回答
72 浏览

ios - 具有 uitableviewdiffabledatasource 的自调整单元格

我有一个详细的 ViewController,其单元格由自定义的 uitableviewdiffabledata 定义,如下所示:

我想制作这样定义的 InfoTableViewCell:

我想让这个单元格根据 textField 中的文本调整大小。关于如何做到这一点的任何提示?PS 我正在使用 LBTA 工具用 textField 填充单元格的内容。

0 投票
2 回答
43 浏览

ios - SWIFT:从定义 tableView 到 tableViewCell 的 ViewController 通信数据

我已经在 viewController 中以编程方式实现了一个 tableView:

tableViewCell 也以编程方式实现:


我要实现的:

  1. 填充moviesItemsArray在里面MoviesViewController5
  2. 根据索引与每个通讯员moviesItems进行沟通moviesItemsArrayTableViewCell3
  3. moviesItems将接收到的电影数据影响到类属性TableViewCell3
  4. TableViewCell3在的帮助下显示电影数据collectionViewTest

问题(第 2 步):我不知道如何根据索引与每个对应moviesItems方进行通信。moviesItemsArrayTableViewCell3
注意: 其他步骤已经完成。


问题:我是否应该像在 SWIFT 中不同类之间的任何通信一样通信数据,或者需要在collectionViewTest.dataSource内部完成一些事情?TableViewCell3

0 投票
1 回答
265 浏览

ios - 在表/集合视图控制器及其关联的 diffable 数据源子类之间共享数据模型的好方法是什么?

我有一个UITableViewController在其中声明的模型属性。当从UITableViewDataSource协议一致性迁移到UITableViewDiffableDataSource表视图控制器外部的子类时,模型不再可以在数据源中访问。

在两者之间共享数据模型的推荐方法是什么,例如,diffable 数据源中的单元格删除委托回调可以反映模型属性和 CloudKit 数据库的变化。

0 投票
0 回答
326 浏览

ios - 在动画中应用具有相同数据结果的 NSDiffableDataSourceSnapshot

我有一个带有 UITableViewDiffableDataSource 的 UITableView,我在其中支持刷新和分页。当我创建具有相同数据的新快照并应用该快照时,它会产生一个奇怪的动画,其中前几个元素向上滑动,而具有相同数据的新元素从左侧滑入。这是更新的片段:

当数据没有改变时,应用与前一个内容相同的新快照不应该产生任何动画?我用新内容检查了现有内容的哈希值,它们都是一样的。

此外,我有一个无限滚动,可以按 10 个项目加载 10 个项目。当我向下滚动并加载下一页时,现有数据附加了 10 个项目。我创建了一个新快照并将其应用于数据源,这再次导致一个奇怪的动画和我的表格视图跳到顶部。

在更改之间,创建了新对象,但它们具有相同的散列,因此它不应该影响表的刷新,对吧?

有谁知道什么可能导致表格视图认为现有内容已经改变,尽管它没有?我发现的关于数据源如何进行差异的唯一信息是它检查每个部分和项目的哈希值。

0 投票
4 回答
616 浏览

ios - UITableViewDiffableDataSouce:无效更新:无效的节数

我正在尝试应用一个空快照,它使我的应用程序崩溃。我已经尝试调试它 2 天了,但似乎无法找到解决此问题的方法。下面是我正在运行的代码:

这是我得到的错误:

我不明白的是为什么在更新之前还有一个部分以及如何处理它。

谢谢。

0 投票
0 回答
174 浏览

swift - 重用单元格时,UITableViewDiffableDataSource 单元格提供程序无法使用临时 id 获取新添加的托管对象

示例应用程序有一个表格视图,该视图由UITableViewDiffableDataSourceNSFetchedResultsController. 您可以通过按加号按钮将字母表添加到表格视图中。为了实现数据源,我使用了这篇文章。问题是,当我向 Core Data 添加新项目时,会将NSFetchedResultsController临时 ID 馈送到单元提供程序。当我向下滚动并且单元格提供程序必须重用单元格时,它无法获取具有临时 ID 的托管对象。但是,当项目被添加到屏幕上的表格视图区域时,它不会发生。

在保存到 Core Data 后立即添加try! fetchedResultsController.performFetch()可以解决问题,但是,它是一种蛮力解决方案,会导致对controller(_:didChangeContentWith:)委托方法的双重调用,有时还会导致双重动画。在这种情况下,获取应该自动发生。我想知道,为什么单元格提供程序无法获取数据以及如何以有效的方式解决此问题。