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; }
- ( 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; }
/ * * 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; }