2013-06-13 2 views
3

검색 막대와 tableview, 기본적으로 팝 오버 검색 상자가있는 모달보기 컨트롤러가 있으며 팝 오버 스그를 사용하여 표시됩니다. 상단에는 취소 버튼이있는 UISearchBar가 있습니다. 해당 검색 창에서 취소 버튼을 사용하여보기 컨트롤러를 닫으려고합니다.검색 막대 취소 단추가있는 모달보기 컨트롤러 닫기

-(void) dismissModalViewController:(UIViewController*) viewToDismiss 
{ 
    [viewToDismiss dismissViewControllerAnimated:YES completion:nil]; 
} 
,536와

[self.delegate dismissModalViewController:self] 

의 라인을 따라 나는 꽤 많은 방법을 시도

...

-(void) searchBarCancelButtonClicked:(UISearchBar *)searchBar 
{ 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

[self.presentingViewController dismissViewControllerAnimated:YES completion:nil]; 

위임 방법

UISearchBar가 간섭하는지 여부는 알 수 없지만 합리적인 가설처럼 보입니다. 그렇지 않으면 이것은 일반적인 주제이고 나는 전에 대답되었을지도 모르는 질문을하기 위해 사과한다. 그러나 나는 푸른 색이고 아직도 결과가 없을 때까지 fm와 googled를 읽었다.

+0

취소 할 때 어떻게됩니까? – rocky

+0

제시된보기 컨트롤러에 검색 창 위임을 설정했는지 확인하십시오. – danypata

+0

앱에 아무런 변화가 없습니다. 그것은 대표자들이 적절하게 설정되고 기능들이 모두 호출된다고 말했다. –

답변

4

나는 UISearchController를 사용하여 tableview를 필터링하는 UIPopoverPresentationController에서 같은 것을 경험했습니다.

문제는 당신이 그것이 UISearchController을 일축하지만, UI에 아무런 영향이없는, 그래서 아무 일도 없다고 생각하기 쉽습니다 dismissViewController 전화를 처음. 이것은 UISearchBar가 방해하는 것입니다.

해결책은 dismissViewController를 두 번 호출 (나는 맘에 들지 않습니다)하거나 selfController.dismissViewController를 호출하는 것입니다.

스위프트 3 예 ...

if searchController.isActive { 
    searchController.dismiss(animated: true, completion: { 
     self.dismiss(animated: true, completion: nil) 
    }) 
} else { 
    dismiss(animated: true, completion: nil) 
} 
+1

오, 세상에 나는 이것이 해결책이라고 믿을 수 없어 ... 고마워 +1 –

+1

감사합니다. searchController에'animated : false'를 설정하면 나에게 좋을 것 같습니다. –

-1

나는 같은 문제로 실행하며이 문제를 해결하기 위해 더 나은 방법이있을 것 같지 않습니다 매우 실망입니다. 이상적이지는 않지만 모달을 해제 할 때 이것을했습니다. 그러나 매우 부드럽습니다.

if(self.searchController.isActive){ 
    [self.searchController dismissViewControllerAnimated:YES completion:^{ 
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.35 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
      [self.navigationController dismissViewControllerAnimated:YES completion:nil]; 
     }); 
    }]; 
}else{ 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 
관련 문제