Я только что заметил что-то очень странное с классом UITableViewCell в iOS и свойством userInteractionEnabled.
Похоже, что если для параметра userInteractionEnabled задано значение НЕТ перед присвоением текста метке ячейки, текст окрашивается в серый цвет. Однако установка для параметра userInteractionEnabled значения NO после установки текста оставляет цвет текста черным (см. фрагмент кода примера ниже).
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (!cell)
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
// swap these two lines around, and the text color does not change to grey!
cell.userInteractionEnabled = (indexPath.row % 2) == 0;
cell.textLabel.text = @"Hello";
return cell;
}
Это действительно раздражает, потому что это означает, что я получаю другое поведение в случае повторного использования ячейки. Приведенный выше пример демонстрирует это: первая страница таблицы показывает чередующиеся строки с серым/черным текстом. Прокрутите дальше вниз, чтобы повторно использовать ячейки, и вы увидите, что что-то идет не так.
Мне просто интересно, я делаю что-то не так, или это ошибка iOS? Я вижу проблему в iOS 5.1 на iPad 3. Любое понимание действительно приветствуется!