изменить цвет UITableViewCell после повторного включения взаимодействия с пользователем

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

   cell.userInteractionEnabled = FALSE;

после входа в систему я хочу снова включить некоторые из этих ячеек.

этот фрагмент работает наполовину:

   NSIndexPath *editUsersPath = [NSIndexPath indexPathForRow:0 inSection:1];
        [self.tableView cellForRowAtIndexPath:importPath].userInteractionEnabled = YES;
        [self.tableView cellForRowAtIndexPath:importPath].accessoryType =         UITableViewCellAccessoryDisclosureIndicator;
        [self.tableView cellForRowAtIndexPath:importPath].textLabel.textColor = [UIColor blackColor];

но последняя строка кода не работает - текст по-прежнему серый.


person Adrian    schedule 01.11.2011    source источник


Ответы (1)


Делаете ли вы перерисовку ячеек после изменений? Возможно, вы можете попробовать вызвать setNeedsLayout, чтобы перерисовать ячейку.

person Remear    schedule 01.11.2011
comment
я пробовал - но для textcolor нет изменений. кстати: я могу изменить цвет фона... - person Adrian; 01.11.2011
comment
После установки userInteractionEnabled действительно ли userInteractionEnabled ДА? Бросьте NSLog после этой строки до и после и посмотрите, правильно ли обновляется значение. - person Remear; 01.11.2011
comment
Я также вижу другой пост о похожей проблеме, которую вы, возможно, захотите проверить. stackoverflow.com/ вопросы/7793491/ - person Remear; 01.11.2011
comment
да - это включено пользователем. я пробовал с NSLog - и это тоже можно осязать. я переместил userInteractionEnabled = TRUE в конце после изменения цвета текста. но это ничего не меняет.. [self.tableView cellForRowAtIndexPath:editUsersPath].accessoryType = UITableViewCellAccessoryDisclosureIndicator; [[self.tableView cellForRowAtIndexPath:editUsersPath].textLabel setTextColor:[UIColor blackColor]]; [self.tableView cellForRowAtIndexPath: editUsersPath].userInteractionEnabled = YES; [[self.tableView cellForRowAtIndexPath: editUsersPath] setNeedsDisplay]; - person Adrian; 01.11.2011
comment
После более внимательного прочтения этого другого поста кажется, что он делает противоположное тому, что вы хотите сделать. Где вы вызываете весь этот код? Похоже, что место для этого было бы в willDisplayCell, где вы можете проверить наличие флага для входа в систему, чтобы переключить удобство использования ячейки. - person Remear; 01.11.2011
comment
после входа в систему я вызываю метод UserLoggendIn. мне интересно, потому что я могу изменить все на метке .. цвет фона, текст, тип аксессуара, ... единственное, что я не могу изменить, это цвет текста .. - person Adrian; 01.11.2011
comment
Сегодня, когда я играл с таблицами, я заметил, что если вы сделаете что-то вроде [cell setUserInteractionEnabled:NO] и сделаете [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator], взаимодействие с ячейкой будет отключено, но текст будет черным. Выполнение [cell setAccessoryType:UITableViewCellAccessoryNone] в том же условном выражении, что и [cell setUserInteractionEnabled:NO], фактически устанавливает серый цвет текста ячейки, как и должно быть. Интересно, происходит ли что-то подобное с вами? - person Remear; 04.11.2011
comment
нет - у меня не то же самое.. я думаю, что это ошибка - теперь я меняю источник данных таблицы и перезагружаю ее после установки прав пользователя. думаю, это выглядит лучше.. - person Adrian; 04.11.2011