Как перезагрузить все ячейки таблицы после добавления или удаления ячейки? - PullRequest
2 голосов
/ 11 августа 2011

После добавления или удаления ячейки, только ячейка, которую я добавил или удалил, перезагружается. Мне нужно перезагрузить все мои клетки после добавления или удаления новой клетки.

Я знаю о [self.tableView reloadData], но, если я вызываю это сразу после добавления или удаления ячейки, она обрезает анимацию добавления / удаления ячейки.

Я действительно придумал способ решить эту проблему, но это несколько нелепо, и я подумал, что может быть лучший способ. Вот что я делаю сейчас:

[self.tableView deleteRowsAtIndexPaths:row_to_delete withRowAnimation:UITableViewRowAnimationRight];

double delayInSeconds = .25;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
    [self.tableView reloadData];
});

Ответы [ 3 ]

2 голосов
/ 07 сентября 2011

Попробуйте перезагрузить таблицу с задержкой.

После удаления

[self performSelector:@selector(reloadTableview) withObject:nil afterDelay:0.35];

-(void) reloadTableview {
     [self.YourTableView reloadData];
}
1 голос
/ 12 августа 2011

Может быть, вы можете использовать этот метод tableView:

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

внутри блока:

[tv beginUpdates];

// delete and reloadRows    

[tv endUpdates];
1 голос
/ 11 августа 2011

Вызовите beginUpdates, если хотите, чтобы последующие операции вставки, удаления и выделения (например, cellForRowAtIndexPath: и indexPathsForVisibleRows) были анимированы одновременно.Эта группа методов должна завершаться вызовом endUpdates.Эти пары методов могут быть вложенными.Если вы не выполняете вызовы вставки, удаления и выделения внутри этого блока, атрибуты таблицы, такие как количество строк, могут стать недействительными.Вы не должны вызывать reloadData внутри группы;если вы вызываете этот метод внутри группы, вам нужно будет выполнить любую анимацию самостоятельно.

[self.tableView beginUpdates];
[self.tableView deleteRowsAtIndexPaths:row_to_delete withRowAnimation:UITableViewRowAnimationRight];
[self.tableView endUpdates];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...