Ответ 1
Вы можете:
[tableView reloadRowsAtIndexPaths:[tableView indexPathsForVisibleRows]
withRowAnimation:UITableViewRowAnimationNone];
У меня много данных и много строк в моем TableView. когда изменения данных я хочу обновить мои видимые ячейки на экране, я действительно не хочу использовать reloadData, потому что это дорогостоящий вызов.
Можно ли как-то обновить видимые ячейки?
Я попытался позвонить: beginUpdate
и endUpdate
в таблице, но это не работает все время?
Любые предложения?
Вы можете:
[tableView reloadRowsAtIndexPaths:[tableView indexPathsForVisibleRows]
withRowAnimation:UITableViewRowAnimationNone];
Для Swift 3:
tableView.reloadRows(at: tableView.indexPathsForVisibleRows!, with: .none)
Попробуйте вызвать метод deleteRowsAtIndexPaths, метод UITableView, сразу после удаления модели из источника данных. Например, если вы удаляете строку в режиме редактирования, вы можете написать что-то вроде кода ниже. Обратите внимание: первая строка в инструкции "if" удаляет объект из источника данных, а вторая строка очищает таблицу:
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if ( editingStyle == UITableViewCellEditingStyleDelete ) {
[[[[[ItemsStore sharedStore] parameterArray] objectAtIndex:indexPath.section] objectForKey:@"data"] removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}