2011-03-14 13 views
6

que necesito para realizarnecesidad de realizar reloadSections después [self.tableView endUpdates] se hace animando

[[self tableView] reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationNone]; 

después

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller { 
// The fetch controller has sent all current change notifications, so tell the table view to process all updates. 
    [self.tableView endUpdates];  
} 

se realiza la animación.

Quiero hacerlo de esta manera porque necesito volver a configurar algunas celdas en la sección cuando se elimina una celda de la sección. Esto se debe a que la primera y la última celda de la sección tienen fondos diferentes a las celdas entre ellos. Una sola célula tiene un fondo diferente todos juntos. Si no vuelvo a configurar las celdas que quedan en la sección, podría resultar en una vista incómoda.

Llamar reloadSections durante controllerDidChangeContent es demasiado pronto y se bloquea porque una celda ya no se puede encontrar.

Respuesta

15

Si desea pasar más de 1 argumento a un método con retraso, envuelva la llamada al método en su propio método:

- (void)reloadSections { 
    [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:1] 
     withRowAnimation:UITableViewRowAnimationNone]; 
} 

Luego, cuando se desea volver a cargar:

[self performSelector:@selector(reloadSections) withObject:nil afterDelay:.2]; 
+0

He intentado poner esa línea antes de mi declaración endUpdates, pero ve una " 'NSInvalidArgumentException', razón: '- [UITableView reloadSections:]: Selector no reconocido enviados a la instancia" msg. – P5ycH0

+0

Vaya, es porque reloadSections toma 2 argumentos, no 1 ... edición. – GendoIkari

+0

¡Gracias, eso solucionó mi problema! – P5ycH0

2

Lo ¿sobre esto?

[CATransaction begin]; 

[CATransaction setCompletionBlock:^{ 
    // animation has finished 
}]; 

[tableView beginUpdates]; 
// do some work 
[tableView endUpdates]; 

[CATransaction commit]; 
Cuestiones relacionadas