나는 UISearchBar
과 UISearchDisplayController
을가집니다. 사용자가 searchBar:textDidChange:
안에 텍스트를 쓰면 웹 서비스 호출을 통해 내 TableView를 필터링합니다. 문제는 웹 서비스에서 결과를 얻을 때까지 GUI가 응답하지 않는다는 것입니다. [self performSelector:@selector(callWebService:) withObject:searchText];
을 사용하여 문제를 해결하려고했지만 응답이 없습니다.GUI를 응답하지 않고 웹 서비스 호출을 만드는 방법
편집 : 플 링크 조언에 따라 performSelector
을 performSelectorInBackground
으로 변경했지만 tableView가 올바르게 필터링되지 않고 '결과 없음'만 표시됩니다. 심지어 tableView:numberOfRowsInSection:
이 호출되지 않습니다.
EDIT Again : 'No Results'가 표시되는 이유는 올바른 tableView에서 reloadData
을 호출하지 않았기 때문입니다. UISearchDisplayController
의 속성은 searchResultsTableView
입니다. 그래서 결국 내가 사용한 것은 [self.searchDisplayController.searchResultsTableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:false];
이었고 이제는 잘 동작합니다.
내가 performSelectorInBackground
을 선택했지만 NSURLConnection
에 sendAsynchronousRequest
메서드를 사용하려고했습니다. AliSoftware의 대답을 참조하십시오.
답장을 보내 주셔서 감사합니다. 이제는 performSelectorInBackground로 바꿨지 만 지금은 tableview에 'No Results'가 표시됩니다. – kernix
webservice 호출 함수의 끝에 추가되었습니다. [tableView performSelectorOnMainThread : @selector (reloadData) withObject : nil waitUntilDone : false]; '그러나 여전히 결과를 보이지는 않습니다. – kernix
여기에 코드를 입력하면 더 나은 대답을내는 것이 더 쉬워 질 것입니다. – Shmidt