ios UISearchDisplayController implementa la función de búsqueda UITableView UISearchDisplayController es el paquete de búsqueda de Apple para UITableView

ios UISearchDisplayController implementa la función de búsqueda UITableView

UISearchDisplayController es una clase que Apple encapsula para la búsqueda de UITableView.

Un UITableView está integrado para mostrar los resultados de la búsqueda. Se puede combinar con una función de búsqueda.

El controlador está asociado, otras cosas como cambiar entre el TableView original y el resultado de la búsqueda TableView, visualización de la máscara, etc.

Una vez empaquetado, es muy, muy sencillo de usar. Especialmente cuando desea lograr una búsqueda a pantalla completa, es la más utilizada.

La búsqueda de pantalla completa significa que si usa NavigationBar, TableView aparecerá automáticamente para cubrir cuando haga clic en el cuadro de búsqueda

NavigationBar, para lograr un efecto de búsqueda de pantalla completa, todo este UISearchDisplayController está encapsulado, si

Escribir es más problemático.

Clave:

@interface MainViewController: UITableViewController { 
    NSArray * datos; 
    NSArray * filterData; 
    UISearchDisplayController * searchDisplayController; 
}
Copiar codigo
- ( void ) viewDidLoad 
{ 
    [super viewDidLoad]; 
    UISearchBar * searchBar = [[UISearchBar alloc] initWithFrame: CGRectMake ( 0 , 0 , self.view.frame.size.width 
                                                                           , 44 )]; 
    searchBar.placeholder = @ " buscar " ; 
    
    // Agregar barra de búsqueda a la vista de encabezado 
    self.tableView.tableHeaderView = searchBar; 
    
    // Inicializar SearchDisplayController con la barra de búsqueda
     // y asociar searchDisplayController con el controlador actual 
    searchDisplayController =[[UISearchDisplayController alloc] initWithSearchBar: searchBar contentsController: self]; 
    
    // searchResultsDataSource 就是 UITableViewDataSource 
    searchDisplayController.searchResultsDataSource = self;
    // searchResultsDelegate 就是 UITableViewDelegate 
    searchDisplayController.searchResultsDelegate = self; 
}
Copiar codigo
Copiar codigo
/ * 
 * Si la eliminación del TableView original y el TableView en el SearchDisplayController apuntan al mismo objeto 
 * Necesita distinguir qué TableView está actualmente en la devolución de llamada 
 * / 
- (NSInteger) tableView: (UITableView * ) tableView numberOfRowsInSection: (NSInteger ) sección 
{ 
    if (tableView == self.tableView) {
         return data.count; 
    } else {
         // Búsqueda de predicados 
        NSPredicate * predicate = [NSPredicate predicateWithFormat: @ " self contains [cd]% @ " , searchDisplayController.searchBar.text] ; 
        filterData =   [[NSArray alloc] initWithArray: [datos filtradosArrayUsingPredicate: predicado]];
        return filterData.count; 
    } 
}

 - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath * ) indexPath 
{ 
    static NSString * cellId = @ " mycell " ; 
    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier: cellId]; 
    
    if (celda == nulo) { 
        celda = [[UITableViewCell alloc] initWithStyle: UITableViewCellStyleDefault reuseIdentifier: cellId]; 
    } 
    
    if (tableView == self.tableView) { 
        cell.textLabel.text = datos [indexPath.row];
    } else { 
        cell.textLabel.text = filterData [indexPath.row]; 
    } 
    
    return celda; 
}
Copiar codigo

Supongo que te gusta

Origin blog.csdn.net/woruosuifenglang/article/details/51722739
Recomendado
Clasificación