2012-05-01 19 views
6

He configurado una vista de tabla para que se desplace a cierta fila cuando se carga su controlador de vista. Pongo este código en el método viewDidLoad, y funciona como me esperaba:¿Por qué mi UITableView no se desplaza a menos que le digo que anime el desplazamiento?

[thisTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:16 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];

Sin embargo, si cambio de que el último bit de animated:NO, no desplazarse en absoluto. Estoy de acuerdo con tenerlo animado, pero me pregunto: ¿por qué no se desplaza si está animado en NO?

Respuesta

7

En viewDidLoad, su tableView está vacío, no es posible desplazarse hasta la fila 16. La llamada se evalúa inmediatamente porque no hay necesidad de animación

Cuando usa animación: SÍ, la animación se retrasa hasta que se muestra la vista, su tabla está poblada para entonces.

Es posible que desee utilizar este tipo de código en viewDidAppear (o viewWillAppear) en su lugar, cuando su tabla ya se ha rellenado con datos. Esto lo llamará cada vez que se presente la vista (a menos que agregue algo de lógica), no estoy seguro de si cumple con sus requisitos ...

+0

Perfecto. Funciona como yo quería exactamente. También ayuda mucho saber que tableView no se carga hasta que finalice viewDidLoad. Gracias –

+0

Además, como nota al margen, obligué a la tabla a cargar sus datos en viewDidLoad llamando a reloadData en la vista de tabla. Esto hizo que el desplazamiento fuera sin trabajo de animación en viewDidLoad –

+0

Si esta es una tabla estática, ¿por qué no ?, pero de lo contrario, simplemente no es el lugar correcto para hacerlo. Además, en caso de que vea una falla en la pantalla al usar viewDidAppear, puede usar viewWillAppear en su lugar. –

Cuestiones relacionadas