我有一個UISearchBar
和UISearchDisplayController
。當用戶在searchBar:textDidChange:
內寫入文本時,我會調用Web服務來過濾我的TableView。問題在於,直到我從Web服務獲得結果時,GUI才停止響應。我試圖用[self performSelector:@selector(callWebService:) withObject:searchText];
來解決它,但它仍然沒有響應。如何在不使GUI無響應的情況下進行Web服務調用
編輯:按照Flink的建議,我將performSelector
更改爲performSelectorInBackground
,但現在tableView沒有正確過濾,它只顯示'沒有結果'。 甚至tableView:numberOfRowsInSection:
不會被調用。
再次編輯:我得到'沒有結果'的原因是由於沒有在正確的tableView上調用reloadData
。 UISearchDisplayController
有一個名爲searchResultsTableView
的屬性。所以最後我用的是[self.searchDisplayController.searchResultsTableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:false];
現在它工作正常。
應該指出,雖然我選擇了performSelectorInBackground
,但我可能應該試着在NSURLConnection
上使用sendAsynchronousRequest
方法 - 請參閱AliSoftware的答案。
謝謝你的回覆。我已經將它改爲'performSelectorInBackground',但是現在tableview顯示'No Results' – kernix
我甚至在web服務調用函數'[tableView performSelectorOnMainThread:@selector(reloadData)withObject:nil waitUntilDone:false] '但它仍然沒有顯示任何結果。 – kernix
如果你在這裏提供代碼,會更容易給出更好的答案 – Shmidt