У меня есть табличный вид с несколькими ячейками. Когда я добавляю новую ячейку (используя контроллер модального представления), я хотел бы показать пользователю новую добавленную ячейку. Для этого я хочу прокрутить представление таблицы к новой ячейке, выбрать ее и немедленно отменить ее выбор.Прокрутите представление таблицы к ячейке, затем запустите ячейку
Прямо сейчас, я посылаю deselectRowAtIndexPath
к моему столу вида после интервала задержки:
- (IBAction)selectRow
{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:7 inSection:0];
[self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionTop];
[self performSelector:@selector(deselectRow:) withObject:indexPath afterDelay:1.0f];
}
- (void)deselectRow:(NSIndexPath *)indexPath
{
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}
мне интересно, если есть лучше способ сделать это. Он работает хорошо, но мне не нравится полагаться на статический таймер для выполнения операции, которая иногда может занимать другое время (например, если таблица была очень длинной).
Редактировать: Обратите внимание, что selectRowAtIndexPath:animated:scrollPosition
не приведет к запуску методов делегатов UITableView
. Ни tableView:didSelectRowAtIndexPath:
, ни scrollViewDidEndDecelerating:
не будут называться. Из документов:
Вызов этого метода не вызывает делегат получить сообщение
tableView:willSelectRowAtIndexPath:
илиtableView:didSelectRowAtIndexPath:
, ни он будет посылатьUITableViewSelectionDidChangeNotification
уведомления наблюдателей.
Спасибо за версию НОД. К сожалению, делегат представления прокрутки не будет проинформирован, так как прокрутка не инициируется пользователем. Я выполнил его для проверки, но он был вызван только тогда, когда я прокручивал таблицу вручную. –
Вы можете реализовать 'scrollViewDidScroll:' и проверить 'contentOffset.y', чтобы увидеть, видна ли ячейка. –