iOS--UISearchBar 및 UISearchDisplayController

7174 단어
UISearch Bar는 UIView, UIresponder, NSObject에서 상속됨
4
  • 속성:
  • autocapitalizationType - 입력 텍스트의 대상을 자동으로 대소문자로 설정합니다. (4가지 종류를 포함하지만 키보드가 이 속성을 차단할 때가 있습니다.)
    autocorrectionType - 입력한 텍스트 객체를 자동으로 수정합니다.
    backgroundImage--searchbar의 배경 그림, 만약 그림이 신축 가능하거나 1시 너비가 아니라면 일반적으로 평평하게 깔린다
    barStyle--컨트롤 스타일
    delegate - 컨트롤의 의뢰, UISearchBarDelegate 프로토콜에 따라야 합니다. 기본값은nil입니다.
    keyboardType - 입력할 때 키보드 스타일
    placeholder - 반투명 힌트 텍스트, 입력 검색 내용이 사라짐
    prompt - 컨트롤 맨 위에 표시되는 줄 알림 텍스트
    text - 컨트롤 위에 보이는 텍스트 showsBookmark Button - 컨트롤 오른쪽에 책 단추 (텍스트를 입력할 때 사라짐) showsCancel Button - cancel 단추 보이기 (기본값은 표시)Search Results Button - 컨트롤의 오른쪽에 검색 결과 단추 검색 Results Button Selected - 검색 결과 단추가tintColor - bar의 색 (점차적인 효과가 있음) translucent 선택되었는지 - 컨트롤에 투시효과가 있는지 여부를 지정합니다. scope Button Titles - 검색 표시줄 아래에 있는 선택 표시줄,그룹 안의 내용은 단추의 제목 selectedScopeButton Index - 검색 표시줄 아래에 있는 선택 표시줄 단추의 개수 showsScopeBar - 검색 표시줄 아래에 있는 선택 표시줄을 표시할지 여부를 제어합니다 (YES로 설정해야 scopebar를 사용할 수 있습니다)
    UISearch Bar는 검색 행위를 실행하지 않습니다.delegate를 사용해야 합니다. 검색 텍스트를 입력하고 button 단추를 누르면 프록시 방법이 검색에 대응하는 작업을 완성합니다.
    1. 입력 이벤트 편집하기
  • – searchBar:textDidChange:  
  • – searchBar:shouldChangeTextInRange:replacementText:
  • – searchBarShouldBeginEditing:
  • – searchBarTextDidBeginEditing:
  • – searchBarShouldEndEditing:
  • – searchBarTextDidEndEditing:

  • 2. 버튼 클릭 이벤트:
  • – searchBarBookmarkButtonClicked:
  • – searchBarCancelButtonClicked:
  • – searchBarSearchButtonClicked:
  • – searchBarResultsListButtonClicked:

  • 3. Scope 버튼 이벤트:
  • – searchBar:selectedScopeButtonIndexDidChange:

  • UISearch Bar의 의뢰 이벤트 textDidChange를 이용하여 검색 상자에 입력이 완료되면 입력한 텍스트 길이가 >0이면 자신의 검색 방법을 호출하여 검색 결과를 얻은 다음reloadData를 다시 입력하여 새로 고칠 수 있습니다.텍스트 길이 <0을 입력하면 원래 데이터로 복원해야 합니다.이 방법은 검색 텍스트를 입력하면서 결과를 표시할 수 있습니다."검색"단추를 누르고 검색해야 한다면, 이 동작을 검색BarchSearchButtonClicked에 놓으십시오.
     
    UISearch Display Controller를 이용하면 많은 조작을 간소화하고 검색의 목적을 달성할 수 있다.
    속성:
    active - 검색 인터페이스가 시각화되어 있으며 기본값은 no이며 setactive 방법으로 설정할 수 있습니다.
    delegate--의뢰
    검색 바 - 검색 디스플레이 컨트롤러가 초기화된 후 검색 바는 수정할 수 없고readonly 속성입니다.
    검색Content Controller - 검색 내용을 관리하는 시도 컨트롤러는 일반적으로 UItable View Controller의 실례로 UItable View의 내용을 검색한다는 뜻이다
    검색 Results DataSource - 검색 결과의 데이터 소스
    검색 Results Delegate - 검색 결과 의뢰
    검색 Results TableView - 검색 결과가 어떤tableview에 있는지 보여 줍니다 (read-only).
    검색ResultsTitle - 검색 결과 보기의 title
     
    검색 디스플레이 Controller를 초기화하려면:
    UISearchBar * theSearchBar = [[[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width-50, 40)] autorelease];
    
            theSearchBar.placeholder = @"enter province name";
    
            theSearchBar.autocorrectionType = UITextAutocorrectionTypeNo;
    
            theSearchBar.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;  
    
            theSearchBar.scopeButtonTitles = [NSArray arrayWithObjects:@"All",@"A",@"B",@"C",@"D" ,nil];
    
            theSearchBar.showsScopeBar = YES;
    
            theSearchBar.keyboardType = UIKeyboardTypeNamePhonePad;
    
            theSearchBar.showsBookmarkButton = YES;
    
            tableView.tableHeaderView = theSearchBar;  // searchBar tableView , , , 
    
    UISearchDisplayController * searchdispalyCtrl = [[UISearchDisplayController  alloc] initWithSearchBar:theSearchBar contentsController:self];
    
            searchdispalyCtrl.active = NO;
    
            searchdispalyCtrl.delegate = self;
    
            searchdispalyCtrl.searchResultsDelegate=self;
    
            searchdispalyCtrl.searchResultsDataSource = self;

     
    UISearch Display Delegate 위임 방법을 사용하여 검색 작업을 수행합니다.
    1. 검색 상태 변경:
  • – searchDisplayControllerWillBeginSearch:
  • – searchDisplayControllerDidBeginSearch:
  • – searchDisplayControllerWillEndSearch:
  • – searchDisplayControllerDidEndSearch:

  • 2. tableview를 마운트 및 마운트 해제합니다.
  • – searchDisplayController:didLoadSearchResultsTableView:
  • – searchDisplayController:willUnloadSearchResultsTableView:

  • 3. tableview를 표시하고 숨기기:
  • – searchDisplayController:willShowSearchResultsTableView:
  • – searchDisplayController:didShowSearchResultsTableView:
  • – searchDisplayController:willHideSearchResultsTableView:
  • – searchDisplayController:didHideSearchResultsTableView:

  • 4. 검색 조건 변경 시 응답:
  • – searchDisplayController:shouldReloadTableForSearchString:  
  • – searchDisplayController:shouldReloadTableForSearchScope:

  •  
    검색 디스플레이 컨트롤러는 자체에 검색 Results TableView가 있기 때문에 작업을 수행할 때 먼저 검색 결과의tableView인지 아닌지를 판단해야 한다. 만약에 표시된 것이 검색 결과의 데이터이고 그렇지 않으면 TableView 자체의view라면 원시 데이터를 표시해야 한다.
       
    if(tableView == self.searchDisplayController.searchResultsTableView){
            arr = [self.filterContent valueForKey:key]; // 
        }
    
        else{
            arr = [self.localresource valueForKey:key];  // 
        }

     
    이렇게 하면 매번 RealoadData를 필요로 하지 않는다.
     
    다음과 같은 좋은 인스턴스를 참조할 수 있습니다.http://developer.apple.com/library/ios/#samplecode/TableSearch/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007848

    좋은 웹페이지 즐겨찾기