Tengo una tabla con sombras sobre la parte superior y debajo de la celda inferior (usando la solución de Matt Gallagher aquí: http://cocoawithlove.com/2009/08/adding-shadow-effects-to-uitableview.html). Estos se agregan en el método layoutSubviews de la extensión de clase UITableView.Devolución de llamada UITableView después de la animación de eliminación de fila completa
Agrego y elimino dinámicamente celdas debajo de cada celda principal (estas proporcionan datos adicionales) - llamemos a estas celdas de "detalles". Solo hay uno abierto cada vez. Al eliminar la "celda de detalles" debajo de la última celda principal, cuando comienza la animación, la sombra se desplaza hacia arriba hasta la última celda (arriba de la celda de detalles). Hace esto porque los métodos layoutSubview consideran que la última celda de la tabla ha cambiado en el momento en que comienza la animación de deleteRowsAtIndexPaths (en lugar de cuando finaliza la animación).
Por lo tanto, en esencia, necesito una manera de mantener la sombra debajo de la celda de detalles, ya que se elimina. No estoy seguro de la mejor manera de hacer esto. Si el UITableView ya no se considera que la célula sea la última celda, entonces no estoy seguro de que incluso cómo conseguir la célula (ya que el UITableView obtiene la célula por lo tanto):
NSIndexPath *lastRow = [indexPathsForVisibleRows lastObject];
if ([lastRow section] == [self numberOfSections] - 1 &&
[lastRow row] == [self numberOfRowsInSection:[lastRow section]] - 1)
{
//adds shadow below it here
}
Así que, atrapando al inicio de la animación no sirve de mucho si el UITableView todavía piensa que la celda principal sobre la celda "detail" es "lastObject".
Gracias por cualquier idea.
has necesitado añadir la parte superior y la sombra inferior como ' tableHeaderView' y 'tableFooterView' respectivamente? Sin duda, estas vistas se mantienen en su lugar y se mueven adecuadamente cuando la tabla cambia de tamaño después de una animación de eliminación. – simeon