- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 UITableViewDiffableDataSource
在我的应用程序中实现搜索屏幕.每个单元格代表一个搜索命中并在单元格标题中突出显示搜索匹配,有点像 Xcode 的 Open Quickly 窗口突出显示其结果项的部分。在搜索字段中输入文本时,我更新了结果列表。结果随着相关性的变化在列表中上下移动。
诀窍是每次搜索文本更改时我都需要强制每个单元格重新呈现,因为新的搜索字符串意味着更新单元格标题的突出显示部分。但我不想动画删除和插入,因为它仍然是同一个项目。如何使用快照告诉数据源它需要重新加载单元格?
我这样声明数据源:
@property (retain) UITableViewDiffableDataSource<NSString *, SearchHit *> *dataSource;
SearchHit
代表一个搜索结果;它具有显示标题和要在标题中突出显示的范围数组的属性。它覆盖
hash
和
isEqual:
这样每个结果行都是唯一标识的。
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
NSArray<SearchHit *> *hits = [self fetchHits:searchText];
NSDiffableDataSourceSnapshot<NSString *, SearchHit *> *snap = [[[NSDiffableDataSourceSnapshot alloc] init] autorelease];
[snap appendSectionsWithIdentifiers:@[@""]];
[snap appendItemsWithIdentifiers:hits];
[snap reloadItemsWithIdentifiers:hits];
[self.dataSource applySnapshot:snap animatingDifferences:YES];
}
reloadItemsWithIdentifiers
在那里调用,然后一旦它出现在结果列表中,任何单元格都不会改变。添加
reload
调用帮助,但现在大多数单元格都在不断更新。这在我的代码中的某处闻起来像是逻辑错误,但我已经验证传递给快照的命中是正确的,而传递给数据源的单元格创建回调的命中不是。
SearchHit
的散列和相等比较以包括标题的突出显示部分,他们以前没有。然后我在每次更新时删除并插入所有单元格的动画,这是我不想要的。
reloadItemsWithIdentifiers
应该做...对吗?
最佳答案
diffable 数据源 API 可能不是在单元格本身上影响动画的正确工具。它面向单元格的出现、消失和排序的动画。如果您的数据源具有通过 Hashable 一致性表示的更改,则 api 会将其视为更改并删除/插入等。
我的建议是从项目标识符中删除搜索文本,并让每个单元格观察搜索文本并独立于数据源实现动画或重绘。
关于objective-c - 如何在不删除和插入 UITableViewDiffableDataSource 的情况下重新加载项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60620906/
我正在尝试在UITableView中使用新的UITableViewDiffableDataSource设置带有部分的UITableViewController。 除了设置节标题,一切似乎都可以正常工作
我尝试使用 UITableViewDiffableDataSource class SecondViewController: UIViewController { enum Section
(在与下面的@AndreasOetjen 讨论后重写了这个问题。感谢他的评论。) 我在使用 UITableView 时遇到了问题具有可区分的数据源。在我的应用程序中,当用户修改一个项目时,它可能会更改
iOS 13 - 测试版 我正在使用 UITableViewDiffableDataSource,我想将项目从一个部分移动到另一个部分。 我正在将新快照应用到数据源,项目立即移动没有动画过渡。我尝试了
我目前在使用 UITableViewDiffableDataSource 时遇到问题. 我想试试这个新功能,所以我在网上看了很多教程,但似乎没有一个能解决我的问题。 在我当前的 viewControl
我尝试为 UITableView 中的每个部分添加标题标题,但在本例中是 UITableViewDiffableDataSource我不知道我应该在哪里做。我的代码的一部分: private func
我正在对 UITableViewDiffableDataSource 进行一些修改,我能够毫无问题地加载 tableView。我正在尝试在 tableView 中创建节标题,但是我遇到了一些古怪的行为
我正在使用 UITableViewDiffableDataSource 在我的应用程序中实现搜索屏幕.每个单元格代表一个搜索命中并在单元格标题中突出显示搜索匹配,有点像 Xcode 的 Open Qu
我正在尝试采用新的 iOS 13 UITableViewDiffableDataSource 并且遇到了障碍;我无法工作如何实现 func sectionIndexTitles(for tableVi
我正在尝试让我的 tableView cells 可移动,但它需要来自 UITableViewDataSource 协议(protocol)的 2 或 3 个函数,如果我试图在我的 中实现委托(del
iOS 13 有一些新的 API 用于处理 tableView 和 API 的一个有趣区域 是UITableViewDiffableDataSource 的cell 提供程序参数 public typ
我是一名优秀的程序员,十分优秀!