Its*_*ret 2 core-data uitableview uisearchdisplaycontroller nsfetchedresultscontroller
我一直在阅读有关UISearchDisplayController它的所有文档,delegate但是当搜索条件发生变化时,我找不到任何方法来动画表格视图.
我正在使用这两种方法:

他们都返回,YES但仍然找不到任何方法做类似的事情:

我不知道这是否是重要的,但我使用的是NSfetchedResultsController 填充UITableView在UISearchDisplayController
那是谢谢!
当搜索字符串或范围发生更改时,您为获取的结果控制器分配新的获取请求,因此必须调用performFetch以获取新的结果集.performFetch重置控制器的状态,它不会触发任何FRC委托方法.
因此,在更改获取请求后,必须"手动"更新表视图.在大多数示例程序中,这是通过
reloadData搜索表视图,或YES从shouldReloadTableForSearchString或返回shouldReloadTableForSearchScope.效果相同:重新加载搜索表视图而不动画.
当搜索谓词发生变化时,我认为没有任何内置/简单的方法来动画表视图更新.但是,您可以尝试以下(这只是一个想法,我实际上并没有尝试这个):
在更改获取请求之前,请复制旧结果集:
NSArray *oldList = [[fetchedResultsController fetchedObjects] copy];
Run Code Online (Sandbox Code Playgroud)将新的获取请求分配给FRC并调用performFetch.
获取新的结果集:
NSArray *newList = [fetchedResultsController fetchedObjects];
Run Code Online (Sandbox Code Playgroud)不要reloadData在搜索表视图上调用.
oldList并newList检测新的和删除的对象.调用insertRowsAtIndexPaths新对象和deleteRowsAtIndexPaths已删除的对象.这可以通过并行遍历两个列表来完成.NO从shouldReloadTableForSearchString或返回shouldReloadTableForSearchScope.正如我所说,这只是一个想法,但我认为它可行.
| 归档时间: |
|
| 查看次数: |
831 次 |
| 最近记录: |