Estoy agregando un nuevo elemento en la parte inferior de una UITableView y después de insertar el elemento, quiero que UITableView se desplace hasta el final para mostrar el elemento recién insertado . Los nuevos elementos se guardan en Core Data y UITableView se actualiza automáticamente utilizando NSFetchedResultsController.Desplácese hasta el último UITableViewCell utilizando scrollToRowAtIndexPath: atScrollPosition: animado utilizando NSFetchedResultsControllerDelegate métodos
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath
forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath
{
switch (type) {
case NSFetchedResultsChangeInsert:
NSLog(@"*** controllerDidChangeObject - NSFetchedResultsChangeInsert");
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
//THIS IS THE CODE THAT DOESN'T WORK
[self.tableView scrollToRowAtIndexPath:newIndexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];
break;
....
}
Esto lleva a un error de fuera de límites, no puedo hacer que funcione. Puedo desplazarme hasta el penúltimo comentario ajustando la fila de la ruta de índice, pero no puedo acceder al último elemento.
Básicamente, estoy agregando un comentario a una tabla de comentarios y después de agregar un comentario, quiero que la tabla se desplace al comentario más reciente.
gracias @tammo! Esto funcionó a la perfección! – djblue2009
Crear una propiedad llamada 'newIndexPath' generará el error de compilación: 'La propiedad sigue la convención de nomenclatura de Cocoa para devolver 'propiedad' objetos ' Simplemente nombre la propiedad algo diferente:] –
: D Esto fue escrito en un momento en que el compilador no me quejaba de esto Cambiaré 'newIndexPath' a' insertedIndexPath'. –