我的 UISearchDisplayController
通过 NSOperationQueue
执行异步搜索。
但是,在 NSOperation
调用 [searchDisplayController.searchResultsTableView reloadData]
大约 5 秒后,结果表才会在视觉上更新。
- (BOOL) searchDisplayControllerUISearchDisplayController*)controller shouldReloadTableForSearchStringNSString*)searchString
{
[searchQueue cancelAllOperations];
NSInvocationOperation *op = [[[CustomSearchOperation alloc] initWithController:controller searchTerm:searchString] autorelease];
[searchQueue addOperationp];
return NO;
}
我的 CustomerSearchOperation 像这样更新 tableView:
- (void) main
{
// perform search
[searchDisplayController setContents:results];
[searchDisplayController.searchResultsTableView reloadData];
}
问题是 UI 更新必须发生在主线程上,并且 reloadData
是通过 NSOperationQueue
从后台线程调用的。
你可以使用NSObject
方法performSelectorOnMainThread:withObject:waitUntilDone:以确保此类更新发生在主线程上。
- (void) main
{
// perform search
[sdc setContents:results];
[sdc.searchResultsTableView performSelectorOnMainThreadselector(reloadData)
withObject:nil
waitUntilDone:NO];
}
关于ios - UISearchDisplayController 中结果显示延迟 5s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4942718/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |