Обратный вызов UITableView после завершения анимации удаления строки

У меня есть таблица с тенями над верхней и под нижней ячейкой (с использованием решения Мэтта Галлахера здесь: http://cocoawithlove.com/2009/08/adding-shadow-effects -to-uitableview.html ). Они добавляются в метод layoutSubviews расширения класса UITableView.

Я динамически добавляю и удаляю ячейки под каждой основной ячейкой (они предоставляют дополнительные данные) - назовем эти «подробные» ячейки. Единовременно может быть открыт только один. При удалении «ячейки детализации» под последней основной ячейкой в ​​начале анимации тень перемещается вверх к последней ячейке (над ячейкой детализации). Это происходит потому, что методы layoutSubview считают, что последняя ячейка таблицы изменилась в момент начала анимации для deleteRowsAtIndexPaths (а не по окончании анимации).

Итак, по сути, мне нужен способ сохранить тень внизу ячейку сведений как удаляемую. Не уверен, как лучше это сделать. Если UITableView больше не считает эту ячейку последней ячейкой, тогда я не уверен даже, как получить ячейку (поскольку UITableView получает ячейку таким образом):

NSIndexPath *lastRow = [indexPathsForVisibleRows lastObject];
if ([lastRow section] == [self numberOfSections] - 1 &&
    [lastRow row] == [self numberOfRowsInSection:[lastRow section]] - 1)
 {
        //adds shadow below it here
     }

Таким образом, даже захват начала анимации не имеет большого смысла, если UITableView по-прежнему считает, что основная ячейка над ячейкой «detail» является «lastObject».

Спасибо за любые идеи.

6
задан fezfox 18 May 2011 в 01:52
поделиться