Стиль выбора ячейки меняется при втором нажатии

#iphone #objective-c #cocoa-touch #uitableview

#iPhone #objective-c #cocoa-touch #uitableview

Вопрос:

В моем табличном представлении я устанавливаю стиль выбора внутри

 - (void)tableView:(UITableView *)iTableView didSelectRowAtIndexPath:(NSIndexPath *)iIndexPath {

MyCell *aCell = (MyCell *)[iTableView cellForRowAtIndexPath:iIndexPath];
aCell.selectionStyle = UITableViewCellSelectionStyleBlue;
  

Теперь стиль выбора меняется при втором нажатии, а не при первом. После нажатия на ячейку все работает нормально, если вы вернетесь и выберете ее снова. В чем причина этого?

Комментарии:

1. Можете ли вы опубликовать свой код для делегирования источника данных — cellForRowAtIndexPath ? Я предполагаю, что вам нужно позвонить reloadData после изменения базовой модели.

Ответ №1:

Я предполагаю, что причина этого в том, что tableView:didSelectRowAtIndexPath: метод вызывается, когда ячейка уже выбрана (сюрприз!). Таким образом, стиль выбора по умолчанию применяется до первого вызова метода, то есть до того, как вы выполните свое aCell.selectionStyle = UITableViewCellSelectionStyleBlue действие. Когда стиль выбора был изменен один раз, по-видимому, он сохраняется для последующих вызовов (нажатий). Чтобы исправить это, вы должны установить стиль выделения в tableView:cellForRowAtIndexPath: или tableView:willSelectRowAtIndexPath: методах, которые вызываются перед выбором ячейки.