Obj-C, обновлять часть таблицы после загрузки массива, содержащего его строки? - PullRequest
1 голос
/ 12 марта 2012

При определенных обстоятельствах мне нужно удалить одну или две записи в моем табличном представлении.

Вместо вызова reloadData есть ли возможность в любом случае обновить, скажем, 6 строк в таблице, из моих данныхмассив?

Я действительно не хочу вызывать reloadData, так как это приведет к потере позиции пользователей в таблице.

Я не использую основные данные и у меня нет времени для повторного ввода данных.написать.

Ответы [ 3 ]

3 голосов
/ 12 марта 2012

Конечно, есть. Вы можете использовать reloadRowsAtIndexPaths:withRowAnimation: или reloadSections:withRowAnimation:, но если вы удаляете из своей модели данных, вам нужно будет сделать что-то вроде этого:

NSArray *rowsToDelete = [NSArray arrayWithObjects:[NSIndexPath indexPathForRow:row inSection:section], <etc> , nil];
[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:rowsToDelete withRowAnimation:<pickYourPosion>];
[tableView endUpdates];

Изменения в табличном представлении и модели данных должны выполняться синхронно. Читайте об этом здесь .

3 голосов
/ 12 марта 2012

UITableView reloadRowsAtIndexPaths:withRowAnimation: делает то, что вы хотите.

Если вы хотите удалить несколько строк, вы можете сделать что-то вроде этого:

[tableView beginUpdates];

NSInteger rowToDelete = [self.objects indexOfObject:foo];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:rowToDelete inSection:0];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
[self.objects removeObject:foo];

[tableView endUpdates];
1 голос
/ 12 марта 2012

Это то, что вы ищете? reloadRowsAtIndexPaths: withRowAnimation:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...