UITableView - Выбрать ближайшую строку после удаления строки - PullRequest
3 голосов
/ 31 мая 2010

Как и в приложении Apple Notes, после того, как вы проведете пальцем, чтобы удалить выбранную строку, он автоматически выберет ближайшую доступную строку.

Логика должна быть:

если количество строк> 0, то если удалено_row == последняя строка, то
выберите удаленный_ран_индекс-1 строка
еще
выбрать удаленный_индекс + 1 строка
конец
конец

Я пытался реализовать вышеуказанную логику в событии commitEditingStyle , но выбор не удался.
логика selectRowAtIndexPath просто не работает в этом событии, если я применяю ее в кнопке, она работает.

есть идеи?

Ответы [ 2 ]

3 голосов
/ 03 сентября 2011

Одним из способов решения этой проблемы является использование метода performSelector:withObject:afterDelay:.

Из tableView:commitEditingStyle:forRowAtIndexPath: вы можете:

NSIndexPath *indexPathToSelect = ...
[self performSelector:@selector(selectRowAtIndexPath:) 
           withObject:indexPathToSelect
               afterDelay:0];

Затем определите метод selectRowAtIndexPath: в вашем контроллере вида

- (void)selectRowAtIndexPath:(NSIndexPath *)indexPath {
  [self.tableView selectRowAtIndexPath:indexPath 
                              animated:YES 
                        scrollPosition:UITableViewScrollPositionTop];
}
0 голосов
/ 04 июня 2010

Когда вы удаляете строку, вы должны иметь ее indexPath. Затем вы вызываете метод

(void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated

Для indexPath вы можете установить новый indexPath, увеличив или уменьшив indexPath.row на 1.

scrollPosition устанавливает, будет ли tableView прокручиваться вверх или вниз, и анимация должна быть четкой.

В конце концов, вы вручную выбираете этот UITableViewCell.

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