2011-09-30 13 views

Respuesta

22

En el método viewDidAppear: de su controlador, configure la propiedad contentOffset (en UIScrollView) de su vista de tabla para ocultar la barra de búsqueda.

- (void)viewDidAppear:(BOOL)animated{ 
    [super viewDidAppear:animated];  
    self.tableView.contentOffset = CGPointMake(0, SEARCH_BAR_HEIGHT); 
} 
+11

Uso de viewDidAppear: puede causar que el cambio de contentOffset suceda visiblemente al usuario de la aplicación. Usando viewWillAppear: hará el cambio antes de que se muestre nada al usuario. – Shoerob

+2

También puede hacer esto en 'viewDidLoad' para hacerlo solo una vez inicialmente, y aún recordar su lugar en tableView cuando regrese a la vista (por ejemplo en un' UINavigationController'). – devios1

4

relacionada a murat's answer, aquí es una versión más portátil y correcta que va a acabar con la animada compensación de la carga del punto de vista (que asume la barra de búsqueda tiene una propiedad de salida se llama searchBar):

- (void)viewWillAppear:(BOOL)animated 
{ 
    self.tableView.contentOffset = CGPointMake(0, self.searchBar.frame.size.height); 
} 

ACTUALIZAR:

Para dar cabida a tocar en el icono de búsqueda en el índice de la sección, se debe implementar el siguiente método, que restaura el desplazamiento del contenido:

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title 
       atIndex:(NSInteger)index 
{ 
    index--; 
    if (index < 0) { 
     [tableView 
      setContentOffset:CGPointMake(0.0, -tableView.contentInset.top)]; 
     return NSNotFound; 
    } 
    return index; 
} 
Cuestiones relacionadas