reloadTable после удаления анимированной строки - PullRequest
0 голосов
/ 07 августа 2011

У меня есть табличное представление с ячейками, которые можно удалить. При удалении ячейки я хотел бы отобразить анимацию удаления, например UITableViewRowAnimationFade. Проблема заключается в том, что ячейки моего табличного представления имеют чередующиеся цвета фона, поэтому мне нужно -reloadData после завершения анимации, чтобы исправить цвета всех ячеек ниже удаленной ячейки.

Итак, если вы не читали это далеко, мне нужен способ запустить некоторый код после завершения анимации табличного представления. В настоящее время я использую performSelector:withObject:afterDelay: и жестко кодирую приближение задержки анимации. Этот метод работает, но должен быть лучший способ сделать это:

NSIndexPath * path = [listTable indexPathForCell:deletingCell];
NSArray * indexPaths = [NSArray arrayWithObject:path];
[listTable deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
[listTable performSelector:@selector(reloadData) withObject:nil afterDelay:0.35];

В этом случае я предполагаю, что UITableViewRowAnimationFade займет менее 0,35 секунды.

1 Ответ

2 голосов
/ 07 августа 2011

Вы также можете использовать NSTimer с той же задержкой (хотя это и не нужно, -performSelector: withObject: afterDelay: работает нормально).

Другой вариант - цикл через ячейки после deletingCell (path) и перерисовать их, или добавьте пути индекса к массиву и вызовите reloadRowsAtIndexPaths:withRowAnimation:, как показано ниже.Тогда вы также можете использовать UITableViewRowAnimationFade

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...