#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:
методах, которые вызываются перед выбором ячейки.