Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Другие платформы > UITableView не прокручивать при изменении


Автор: vinnitu 1.12.2009, 18:46
есть UITableView 

в фоне запущен процесс который генерирует события добавления/удаления/модификации итемов в списке

одновременно с этим пользователь прокручивает/работает со списком, в частности у него есть позиция скрола и выделенный итем

если в этот момент времени нужно добавить новый элемент в список, то я вызываю

[items addObject:newItem];
[self.tableView reloadData]; //что приводит к потере выделения и сбросу позиции скрола

вопрос: каков алгоритм того чтобы оставлять по возможности выделение (если не удалили именно выделенный элемент, хотя в этом случае логично передавать выделение предыдущему элементу в списке) и прокрутку?

Автор: morpheyushka 7.1.2010, 13:40
Цитата(vinnitu @  1.12.2009,  18:46 Найти цитируемый пост)
вопрос: каков алгоритм того чтобы оставлять по возможности выделение (если не удалили именно выделенный элемент, хотя в этом случае логично передавать выделение предыдущему элементу в списке) и прокрутку? 

Все очень легко:
Код

NSIndexPath *scrollIndexPath = [self.tableView indexPathForSelectedRow]; //сохраняем выделенного
[items addObject:newItem]; 
//не забываем, что если добавился элемент перед выделенным, то выделиться предшествующий ну и с удалением наоборот - 
//что бы не вылететь за пределы списка
[self.tableView reloadData];
[self.tableView selectRowAtIndexPath:scrollIndexPath animated:NO scrollPosition:UITableViewScrollPositionMiddle]; //выделяем и прокручиваем



ЗЫ Надеюсь вопрос еще актуален

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)