Ok creo que lo tengo, parece como un poco de un truco, pero funciona para mis propósitos:
estoy usando guión gráfico: que tienen un controlador UITableView con UISearchBarDisplayController directamente en la parte superior de la misma. Sin código simplemente arrastre y suelte.
A partir de ahí, he seguido este tutorial para obtener la barra de búsqueda para buscar correctamente http://clingingtoideas.blogspot.com/2010/02/uitableview-how-to-part-2-search.html
Sin embargo prepareForSegue: sería solamente me deja mostrar una célula a partir de la matriz original, no con la matriz de búsqueda.
por lo que utiliza didSelectRowAtIndexPath:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (savedSearchTerm) {
searchRowSelected = indexPath.row; //<-- the trick that worked
[self performSegueWithIdentifier:@"ShowDetail" sender:self];
}
}
searchRowSelected es una variable int que declaré en la parte superior de la clase.
didSelectRowAtIndexPath: sabía qué fila estaba seleccionando, pero prepareForSegue no. Es por eso que necesitaba esa variable.
Esto es como lo he usado en prepareForSegue:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"ShowDetail"]) {
dvc = [segue destinationViewController];
NSIndexPath* path = [self.tableView indexPathForSelectedRow];
int row = [path row];
if (savedSearchTerm){ //set the detailViewController with the searched data cell
myDataClass* c = [searchResults objectAtIndex:searchRowSelected];
dvc.myDataClass = c;
}else{ //set the detailViewController with the original data cell
myDataClass* c = [array objectAtIndex:row];
dvc.myDataClass = c;
}
}
}
También utilice este código para limpiar savedSearchTerm
-(void) searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller{
[self setSavedSearchTerm:nil];
}
Si alguien tiene una solución mejor soy todo oídos :)
/cómo/que han implementado 'prepareForSeque:. Remitente:'? He descrito una implementación simple en http://stackoverflow.com/questions/10033279/prepareforsegue-after-uisearchdisplaycontroller/19814031#19814031 – hop