Mi aplicación utiliza un UISearchDisplayController
. Cuando el usuario ha ingresado un término de búsqueda, quiero que permanezca visible en la barra de búsqueda. Esto funciona si el usuario elige uno de los resultados coincidentes, pero no si el usuario hace clic en el botón "Buscar".Mantener el término de búsqueda visible cuando UISearchDisplayController está inactivo
Esto funciona:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView == self.searchDisplayController.searchResultsTableView) {
NSString *selectedMatch = [self.searchMatches objectAtIndex:indexPath.row];
[self.searchDisplayController setActive:NO animated:YES];
[self.searchDisplayController.searchBar setText:selectedMatch];
return;
}
...
Pero si hago lo mismo en -searchBarSearchButtonClicked:
el texto no se queda en la barra de búsqueda. ¿Alguna idea sobre cómo puedo lograr esto en esta situación?
Relacionado, si configuro el texto de la barra de búsqueda (pero dejo el UISearchDisplayController
inactivo) esto desencadena la visualización de searchResultsTableView. Solo quiero mostrar eso cuando el usuario toque la barra de búsqueda.
Editar: encontrado una solución para ajustar el texto de una barra de búsqueda sin mostrar la searchResultsTableView en cualquier momento:
// This hacky YES NO is to keep results table view hidden (animation required) when setting search bar text
[self.searchDisplayController setActive:YES animated:YES];
[self.searchDisplayController setActive:NO animated:YES];
self.searchDisplayController.searchBar.text = @"text to show";
Mejor aún sugerencias bienvenidas!
Ah, gracias! Estaba haciendo '[self.searchController setActive: NO animado: YES]; self.searchController.searchBar.text = searchBar.text; 'pero obviamente' searchBar.text' ya no es lo que yo pensaba que era debido al método 'setActive' vaciando la barra de búsqueda. –