我有一个UISearchBar
和UISearchDisplayController
。当用户在其中写入文本时, searchBar:textDidChange:
我会调用 Web 服务来过滤我的 TableView。问题是在我从 Web 服务获得结果之前,GUI 没有响应。我尝试使用 解决它[self performSelector:@selector(callWebService:) withObject:searchText];
,但它仍然没有响应。
编辑:按照 Flink 的建议,我改为performSelector
,performSelectorInBackground
但现在 tableView 没有正确过滤,它只显示“无结果”。甚至tableView:numberOfRowsInSection:
没有被调用。
再次编辑:我得到“无结果”的原因是由于没有调用reloadData
正确的 tableView。UISearchDisplayController
有一个名为 的属性searchResultsTableView
。所以最后我使用的是[self.searchDisplayController.searchResultsTableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:false];
现在它工作正常。
需要注意的是,虽然我选择了performSelectorInBackground
,但我可能应该尝试使用sendAsynchronousRequest
方法 on NSURLConnection
- 请参阅 AliSoftware 的答案。