2014-10-16 2 views
13

내 프로젝트에서 내 tableView의 데이터를 필터링하기 위해 내부 UISearchController와 함께 tableViewController를 사용하고 있습니다.UISearchController의 취소 버튼

데이터 필터링에는 문제가 없지만 취소 버튼을 클릭하면 UISearchController를 클릭하면 tableView를 다시 불러올 필요가 있지만 위임 방법을 찾을 수 없습니다. 어떻게 이해할 수 있습니까? 이 문제를 해결하려면?

답변

35

UISearchController의 searchBar 대리자를 설정해야합니다. 이 작업을 완료하면 대리자 메서드 인 searchBarCancelButtonClicked :가 제대로 호출됩니다. 당신이 UISearchResultsUpdating 프로토콜을 구현하는 경우

self.searchController.searchBar.delegate = self; 

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { 
} 
+1

약간의 설명이 유용 할 것입니다. – gsamaras

+1

@ G.Samaras 이것은 SearchBar의 델리게이트 메서드입니다 ... searchbar 델리게이트를 직접 사용하는 searchController이므로 파일 헤더 내에서 UISearchBarDelegate를 호출하고 viewDidLoad에서 검색 창 (self.searchController.searchBar.delegate = self;)을 위임하거나 구현 파일에 사용 된 다른 메소드 ... 그러면 SearchBar searchBarCancelButtonClicked의 델리게이트 메소드 내에서 코드를 호출하고 취소 버튼을 실행해야하는 함수를 지정할 수 있습니다. – kAiN

+0

@Gargoyle 모두에게 감사합니다! – kAiN

11

, 당신은 activefalse 때 트리거 취소 된 것을 알 수 있습니다.

func updateSearchResultsForSearchController(searchController: UISearchController) { 
    if !searchController.active { 
     print("Cancelled") 
    } 
}