问题标签 [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.
ios - 单元格未使用 UIViewController 中的 UITableViewDiffableDataSource 填充
在我将子类从 UITableViewController 更改为 UIViewController 之前,我的代码正在运行。
切换的原因是我需要在我的 tableView 之上添加一个 collectionView。
但现在细胞没有填充。快照仍在被调用,用户数组有它的内容。
不知道为什么更改为 UIViewController 会使单元格停止填充。
swift - 我可以在 UIView.animate 中使用 DiffableDataSource 动画吗?
我正在玩UITableViewDiffableDataSource
,并且我试图在更改数据源时为此函数添加延迟和持续时间:
open func apply(_ snapshot: NSDiffableDataSourceSnapshot<SectionIdentifierType, ItemIdentifierType>, animatingDifferences: Bool = true, completion: (() -> Void)? = nil)
我的代码:
我想要:
- 立即隐藏按钮
- 3 秒后,使用 diffableDataSourceSnapshot 函数更改视图。
但是,UIView 动画块似乎不起作用,我看到的是应用程序立即执行 diffableDataSourceSnapshot 动画,没有持续时间和延迟。
无论如何我可以在 UIView 动画块中使用那个“应用”功能吗?
ios - 将 animatingDifferences 设置为 true 时,使用 UITableViewDiffableDataSource 将单元格移动到新部分会使应用程序崩溃
所以我正在尝试学习如何使用UITableViewDiffableDataSource
和将单元格移动到不同的部分时遇到问题。现在我只是专注于将单元格插入朋友部分。问题是应用程序在设置为 true.apply(snapshot, animatingDifferences: animatingDifferences)
时崩溃。animatingDifferences
当它设置为 false 时,它不会崩溃,但这不会给用户在新部分中插入单元格时带来令人愉悦的效果,它会产生一种我不想使用的“活泼”效果。
这是我得到的错误:
“无效更新:第 0 节中的行数无效。更新后现有节中包含的行数 (4) 必须等于更新前该节中包含的行数 (4),加上或减去从该部分插入或删除的行数(0 插入,0 删除)加上或减去移入或移出该部分的行数(1 移入,0 移出)。
我查看更新后该部分中的行数,它确实返回了正确的新值但仍然崩溃?
现在我的 DiffableDataSource 如下:
然后在我里面我EditEnabledDiffableDataSource
有这个:
uitableview - tableView(canEditRowAt) 不再使用 tableViewDiffableDataSource
我创建了一个相当简单的 tableView 来为项目模型选择类别。昨天一切正常。今天,我一直在尝试将 tableView 数据源切换到 a UITableViewDiffableDataSource
,因为我想围绕 API 进行思考。我已经备份并运行了整个 tableView,除了我不能再编辑我的行了!
当我点击导航栏中的编辑按钮时,该setEditing
逻辑newCategoryButton
被禁用,当我再次点击它时,该逻辑被启用。但是,我永远无法滑动删除,并且在编辑模式下,删除图标不会显示在我的行旁边。
我尝试删除setEditing
,清空commit editingStyle
并简单地设置canEditRow
为return true
但仍然没有。
任何帮助将不胜感激。感谢!
swift - 移动/删除 Diffable TableView 行
我正在尝试将 tableView 更新为 UITableViewDiffableDataSource 但我无法删除/移动行。在上一个问题的帮助下,我对 dataSource 进行了子类化,并在那里添加了 tableview 覆盖。这些行将被编辑,但是当我离开并返回视图时,它们会回到原来的状态,因为我在 VC 中的数据模型没有随着编辑而更新。有人能帮忙吗?
}
编辑**
我通过添加 backingStore 取得了一些进展,并且更接近能够更新现有单元格。然而,我最终只是一直陷入同一个错误循环中。
ListItem
我首先添加了一个值是自定义类的 backingStore 属性。该类可以使用 UUID() 作为属性之一进行哈希处理。
然后我创建了一个方法来创建数据源,为单元格提供程序提供 UUID 以查找 listItem。我还使用填充 UUID 和 backingStore 的初始快照更新了 UI。
最后,当用户点击一个单元格,进行编辑并点击完成时,视图展开回这个控制器,我尝试在展开方法中更新数据源。就目前而言,该应用程序将创建第一个新单元格,但是当尝试第二个单元格时,它会重新加载第一行两次,并且随着我不断添加它将现有行加倍。我猜是因为我一遍又一遍地附加整个列表,但我不知道如何访问附加的 uuid。
当我点击现有单元格并编辑它的信息时,它可以工作,但是如果我再次进入该行并出来,则该单元格会恢复到原来的状态。如果我继续尝试它会在原始状态和更新状态之间来回弹跳,就像它在快照之间来回弹跳一样?
ios - 尝试添加功能以能够播放打印 UITableView
我有一个(待办事项)列表应用程序。数据布置在具有自定义单元格的 diffable dataSource tableview 中。我有一个功能正常的下拉菜单,我正在尝试添加一个print
按钮,以便用户可以根据需要打印出列表(在许多列表应用程序中似乎是标准的)。
到目前为止,我在按钮的操作中有以下内容:
和代表:
如您所见,我正在尝试将 tableview 转换为 PDF 并打印(其他可能会更好?)。.exportAsPdfFromTable()
tableView 上的方法是一个UITableView
扩展,如下:
}
结果是打印控制器显示一个空白页。关于我所缺少的任何想法?
ios - 如果用户滚动,UITableView 不会加载新状态
已解决:这与 UITableViewDiffableDataSource 无关。问题是从 2 个不同的线程顺序访问领域并且没有得到一致的结果
其中一个线程是主线程,并且滚动以某种方式使主线程忙并触发了竞争条件
如果用户在更新发生时不滚动表格视图,则一切正常。
如果用户正在滚动或只是用手指在 tableview 上,则更新时不会发生动画并且不会显示差异。我在控制台中没有收到任何错误
数据更新代码如下:
这是某种预期的行为吗?
uitableview - > 20K 行的不同数据源性能问题
当拥有更大的数据集(大约 22,000 个项目)时,我遇到了 diffable 数据源的性能问题。我很惊讶在动画打开时应用快照需要这么多时间。见代码部分:
注意:Jesse Squires 提供了一个很好的资源:
我的问题是,鉴于应用快照是 O(n) 操作,我是否遗漏了某些东西或可区分的数据源无法更快地处理这个问题?
关闭动画,与 一样reloadData
,会有所帮助。
示例代码是由SwiftLee根据这篇文章设置的。
请在此处查看示例项目。
示例视频在这里。
更新(2021 年 9 月 2 日):这里有一个很好的 Twitter 讨论。
旁注:可以通过不设置 来改进示例应用程序,fetchBatchSize
因为请求与NSFetchedResultsController
. 见链接。
swift - 使用 UITableViewDiffableDataSource 时,cellProvider 在部分删除后不更新
我有一些代码加载到一些空的部分和项目中。然后,如果存在网络连接,则会对可见单元进行一些调用。我在每个部分都有一个按钮,它根据使用 indexPath 的部分类型导航到另一个视图。我的问题是,当我删除第一个部分时,cellProvider 不会更新 indexPath 并且按钮导航到错误的视图。但是,如果我滚动,问题就会消失。如何确保 indexPath 更新?编辑:看来我的 headerViews 保留了旧的 indexPath,但 cellProvider 正确更新。滚动并返回后,标题视图将设置为正确的 indexPath。
swift - UITableViewDiffableDataSource iPad 问题
我有一条崩溃错误消息 - 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效参数不满足:itemIdentifier”
我使用 UITableViewDiffableDataSource 来实现我的 UITableView。当我尝试“dataSource?.apply”时发生了崩溃。它只发生在 iPad 上,iPhone 工作正常
您知道什么是原因以及如何解决吗?
代码示例