2009-12-11 2 views
1

원하는 항목 :일반 UIView에서 컨트롤러가있는 UISearchBar?

상단에 UISearchBar가있는 UIView입니다. searchBar를 편집하기 시작하면 현재보기가 희미 해지고 다른 [UITableView] 컨트롤러의 검색 결과가 표시됩니다.

내가 무엇을 시도했다

: 인터페이스 빌더에서

:

  • 가있는 UIView에 "줄을 검색하고 검색 디스플레이 컨트롤러"를 추가합니다.
  • 은에 UISearchDisplayController에
  • 설정된 모든 출구를 jQuery과 개체를 추가 내있는 UITableViewController
  • 에 대한 자리 표시 자 객체를 추가하고있는 UITableViewController에 UISearchBar에 대한 대리자를 설정있는 UITableViewController
  • 에 대한보기로 설정 있는 UITableViewController
  • 코드에서

:

  • 가 UISear 추가 chBarDelegate, 내가지고있어 무엇있는 UITableViewController

에 UISearchDisplayDelegate 프로토콜 : 검색 필드를 편집 할 태핑

앱을 충돌합니다. 오류 메시지가없고 UITableViewController의 "viewDidLoad"메서드 만 호출됩니다. 결론적으로

: 내가 UIView의에있는 UISearchBar 위해 외부 컨트롤러를 사용하는 방법에 대해 어떻게 가야합니까

?

+0

"검색 필드를 편집하려면 누르기로 인해 응용 프로그램이 충돌합니다." 응용 프로그램이 충돌하는 곳을 디버깅 할 수 있어야합니다. 디버그 모드에서 실행할 때 스택 추적은 무엇입니까? –

답변

3

좋아, 그래서 알아 냈어. 나는 이것이 내가 시도한 첫 번째 것 중 하나라고 맹세하지만, 분명히 올바르게하지는 않았다. 내 UIViewController에 (그 안에 UISearchBar가있는 하나)에서

, 나는 인스턴스화 UISearchDisplayController : SearchController가있는 UITableViewController의 내 서브 클래스이며, UISearchBarDelegateUISearchDisplayDelegate 프로토콜을 적응

// sb = IBOutlet UISearchBar 
sc = [[SearchController alloc] initWithStyle:UITableViewStylePlain]; 
sdc = [[UISearchDisplayController alloc] initWithSearchBar:sb contentsController:sc]; 
sb.delegate = sc; 
sdc.delegate = sc; 
sdc.searchResultsDelegate = sc; 
sdc.searchResultsDataSource:sc = sc; ` 

.

이제 생각해 보면 IB에서 링크 된 것을 사용하는 것이 아마도 (물론 같은 방식으로) 잘 작동 할 것입니다.

그래서 위의 작품,하지만 지금은 수동으로 메인보기 : [self.view addSubview:sc.tableView];에 추가하지 않으면 그 결과 tableView가 표시되지 않습니다,하지만 그게 다른 질문에 대한 사료입니다.

Google 자체 검토 위의 UISearchDisplayController에 대한 웹 문서는 없습니다 (google-fu에 관한 한). 따라서 언젠가 다른 Obj-C 문제를 해결할 수 있습니다.

0

Controller Builder가 UITableViewController에서 확장되면 인터페이스 빌더를 사용하는 경우 검색 막대를 사용할 수 없습니다. 대신 UIViewController에서 확장하고 Table Data Source 및 Delegate 프로토콜을 직접 준수하십시오.

그래, 그 대답은 당신에게 좋은 답변이 될 것이므로 질문에 코드 또는 무언가를 추가해야 할 것입니다.

+0

UITableViewController에서 검색 창을 원하지 않습니다. 그 컨트롤러가 별도의 viewcontroller에 의해 제어되는 다른 뷰에있는 UISearchBar에 결과 tableView를 제공하기를 원합니다. – kbanman

+0

Apple 지침에 따라 화면 당 하나의보기 컨트롤러 만 있어야합니다. – bpapa