我有UISearchBar
和UISearchDisplayController
。当用户在searchBar:textDidChange:
内写入文本时,我会进行Web服务调用以过滤我的TableView。问题是GUI在从Web服务获得结果之前没有响应。我试图使用[self performSelector:@selector(callWebService:) withObject:searchText];
来解决它,但它仍然没有响应。
performSelector
更改为performSelectorInBackground
,但现在tableView未正确过滤,它只显示“无结果”。
即使tableView:numberOfRowsInSection:
也未被调用。
再次编辑:我得到'无结果'的原因是由于没有在正确的tableView上调用reloadData
。 UISearchDisplayController
有一个名为searchResultsTableView
的媒体资源。所以最后我使用的是[self.searchDisplayController.searchResultsTableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:false];
,现在它工作正常。
应该注意的是,虽然我选择了performSelectorInBackground
,但我可能应该尝试在sendAsynchronousRequest
上使用NSURLConnection
方法 - 请参阅AliSoftware的回答。
答案 0 :(得分:1)
您需要让您的网络呼叫异步。
在您的情况下,您可以将performSelector
更改为performSelectorInBackground