gpt4 book ai didi

uitableview - UISearchDisplayController 动画重新加载数据

转载 作者:行者123 更新时间:2023-12-03 03:54:14 27 4
gpt4 key购买 nike

我一直在阅读有关 UISearchDisplayController 及其 delegate 的所有文档,但我找不到任何方法可以在搜索条件更改时为表格 View 设置动画。

我正在使用这两种方法: UISearchDisplayController methods

它们都返回 YES 但仍然找不到任何方法来执行类似的操作: UITableView Methods

我不知道这是否重要,但我正在使用 NSfetchedResultsController 来填充 UISearchDisplayController 中的 UITableView

就是这样,谢谢!

最佳答案

当搜索字符串或范围发生更改时,您将为获取结果 Controller 分配新的获取请求,因此必须调用 performFetch 来获取新结果集。 performFetch 重置 Controller 的状态,并且不会触发任何 FRC 委托(delegate)方法。

因此,在更改获取请求后,必须“手动”更新 TableView 。在大多数示例程序中,这是通过

  • 在搜索 TableView 上调用reloadData,或者
  • shouldReloadTableForSearchStringshouldReloadTableForSearchScope 返回 YES

效果是一样的:搜索 TableView 重新加载,没有动画。

我认为没有任何内置/简单的方法可以在搜索谓词更改时对 TableView 更新进行动画处理。但是,您可以尝试以下操作(这只是一个想法,我自己实际上并没有尝试过):

  • 在更改获取请求之前,复制旧结果集:

    NSArray *oldList = [[fetchedResultsController fetchedObjects] copy];
  • 将新的提取请求分配给 FRC 并调用 performFetch

  • 获取新的结果集:

    NSArray *newList = [fetchedResultsController fetchedObjects];
  • 不要在搜索 TableView 上调用reloadData

  • 比较 oldListnewList 以检测新对象和已删除对象。为新对象调用 insertRowsAtIndexPaths,为删除的对象调用 deleteRowsAtIndexPaths。这可以通过并行遍历两个列表来完成。
  • shouldReloadTableForSearchStringshouldReloadTableForSearchScope 返回 NO

正如我所说,这只是一个想法,但我认为它可行。

关于uitableview - UISearchDisplayController 动画重新加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14797224/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com