2008-11-21 18 views
16

Me gustaría restablecer por completo la posición de desplazamiento de una UITableView, de modo que cada vez que la abra mostrará los elementos más importantes. En otras palabras, me gustaría desplazar la vista de tabla a la parte superior cada vez que se abre.¿Cómo restablecer la posición de desplazamiento de una UITableView?

He intentado utilizar el siguiente fragmento de código, pero parece que no he entendido bien la documentación:

- (void)viewWillAppear:(BOOL)animated { 
    [tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionTop animated:NO]; 
} 

Es este el enfoque equivocado aquí?

Respuesta

33

August obtuvo el método específico de UITableView. Otra manera de hacerlo es:

[tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO]; 

Este método se define en UIScrollView, la clase padre a UITableView. El ejemplo anterior le dice que se desplace al cuadro 1x1 en 0,0 - la esquina superior izquierda, en otras palabras.

+1

Esta es una forma bastante sencilla de hacerlo porque no tiene que preocuparse de si su mesa está vacía o no. Tuve un accidente desagradable yendo a NSIndexPath (0,0) cuando no había registros para mostrar. –

+0

¡Gracias! ¡Un gran consejo! – quantum

6

El método que está utilizando se desplaza a (como lo implica el nombre del método) a la fila seleccionada más cercana. En muchos casos, esta no será la fila superior. En su lugar, desea utilizar ya sea

scrollToRowAtIndexPath:atScrollPosition:animated: 

o

selectRowAtIndexPath:animated:scrollPosition: 

en el que utiliza la ruta del índice de la fila que desea desplazarse a. El segundo método realmente selecciona una fila, el primer método simplemente se desplaza hacia ella.

+0

Esto no funcionó para mí con iOS 4.0 durante el inicio de una secuencia de animación. Tuve que usar scrollRectToVisible: animated: – chrish

Cuestiones relacionadas