2009-12-04 3 views
9

Я не могу найти подходящее место для звонка selectRowAtIndexPath:animated:scrollPosition: в изначально выберите строку в UITableView. Данные таблицы не были загружены, когда контроллер табличного представления инициализирован, поэтому я не могу сделать выбор сразу после инициализации моего UITableViewController (исключение Over bound могло бы произойти иначе).Как изначально выбрать строку в UITableView

ответ

6

Чтобы установить состояние представления перед его появлением, необходимо использовать viewWillAppear:, даже если представление уже было отображено ранее. Любой невидимый вид в UITabViewController или UINavigationViewController может быть выгружен в любое время, поэтому вы не можете рассчитывать на невидимый вид, чтобы сохранить его состояние.

Или, для более точного контроля, применение loadView, viewDidLoad, и viewDidUnload.

Если вы поддерживаете свою собственную иерархию контроллеров представлений, вам придется вручную пересылать сообщения viewWillAppear, viewWillDisappear и т. Д. На ваши контроллеры подзадачи.

3

Попробуйте перегрузить viewWillAppear:animated или viewDidAppear:animated не забудьте позвонить в супер.

Обязательно позвоните по номеру selectRowAtIndexPath:indexPath animated:NO, он выберет без задержки.

+1

Я уже пробовал это. Но, к сожалению, мне нужно вручную добавить UITableView в качестве подзаголовка в другой вид, поэтому view view ViewAppear: aimated или viewDidAppear: анимированный не будет вызываться. Кроме того, выбор каждого отображения времени больше, чем «первоначальный выбор», и для определения того, является ли этот вид первым, необходим дополнительный флаг. – an0

2

вы можете установить любую ячейку, выбранную в методе cellforrowatindexpath для uitableview. Используя cell.selected = YES;

Смежные вопросы