Pregunta

Estoy tratando de imitar el comportamiento de una vista de tabla similar a la aplicación iPod para los artistas - es una vista de tabla seccionada con un índice de la sección de la derecha, con una barra de búsqueda en la parte superior, pero en un principio oculto cuando la vista se muestra .

Estoy utilizando el SDK 3.1.2 y IB, por lo que simplemente arrastrado un UISearchDisplayController en mi SEMILLA - IT cables todo por la búsqueda. El problema comienza porque estoy añadiendo la UISearchBar a la primera sección de la UITableView, porque si he entendido bien, debo hacer esto para que pueda saltar a la barra de búsqueda tocando el icono de búsqueda en el índice de la sección directa? Cuando aparezca la vista de tabla veo la barra de búsqueda, pero ha cambiado el tamaño y ahora tengo un bloque blanco detrás del índice de la sección en la parte superior. No hace falta ser el color de la envolvente del UISearchBar que curiosamente es diferente a la mostrada en el Interface Builder.

Me encontró una punta de añadir una pequeña barra de navegación y una UISearchBar en un UIView, a continuación, añadir esto a la vista de tabla celular. Esto funciona, pero el color de fondo de la barra de navegación es lo que se espera normalmente (gris), no el color diferente como se señaló anteriormente. Más interesante, si tocar en la barra de búsqueda para iniciar una búsqueda, a continuación, toque Cancelar, todo es fijo. El fondo a lo largo de toda la célula tableview cuando la barra de búsqueda es, es el mismo?

¿Fue útil?

Solución

contestado a mi propia pregunta, pero podría ser útil para otros principiantes:

  • Poner la barra de búsqueda en la cabecera de la vista de tabla cuando la vista cargas, desplazamiento contentOffset abajo de la altura de esta barra de búsqueda (típicamente 44 píxeles), pero fácil de comprobar de forma dinámica
  • Añadir un icono de búsqueda en el índice de la sección con "{búsqueda}"
  • Haga la sectionIndexSection para la búsqueda -1
  • Al manipular toques índice sección utilizan el valor 'especial' índice de búsqueda "-1" (para desplazarse a la parte posterior contentOffset a (0, 0)

Actualizar : utilizar la constante de cadena UITableViewIndexSearch secuencia en el lugar de la cadena indocumentado "{búsqueda}" - es decir, devolverlo como uno de los elementos de matriz en ejecución:

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView

en UITableViewDataSource .

Otros consejos

Ponga la búsqueda del controlador en el comienzo de la tableView y probar este:

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
    if (index==0){
        [tableView scrollRectToVisible:CGRectMake(0,0,1,1) animated:NO];
        return -1;
    }
...
}


- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
        NSMutableArray * retValue =[NSMutableArray arrayWithArray:[YOUR ARRAY]];
        [retValue insertObject:UITableViewIndexSearch atIndex:0];
       return retValue;
 } 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top