我的 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];
}
Best Answer-推荐答案 strong>
问题是 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/
|