UITableViewCell: Как предотвратить синее фоновое свойство w/o borking isSelected выбора?

Вам придется немного пройти уровень абстракции, чтобы выяснить причину. Инструкции сравнения / перехода в x86 являются двоичными (так как они могут быть легко вычислены за несколько тактов), и так оно и было.

Если хотите, многие языки предлагают абстракцию для этого. В PHP, например, вы можете использовать:

$isPrimaryColor = in_array($someColor, array('Red', 'White', 'Blue'));
38
задан Peter Hosey 7 October 2009 в 20:15
поделиться

5 ответов

Отличным ресурсом по настройке UITableViews был этот пост Мэтта Галлахера. Что вам нужно сделать, так это установить для selectedBackgroundView новое представление (вместо nil), которое является либо прозрачным, либо UIImageView.

47
ответ дан 27 November 2019 в 02:59
поделиться

То, что у меня работало в прошлом, - это просто поместить:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated { }

в мои подклассы UITableViewCell (потому что он не вызывает super и не выделяет себя). Надеюсь, это то, что вы искали.

-1
ответ дан 27 November 2019 в 02:59
поделиться

Вы также должны переопределить setHighlighted: чтобы предотвратить отображение синего градиента. Если вы просто переопределите setHighlighted: тогда вы получите мгновенный эффект выделения.

так что у вас будут эти два метода:

- (void)setHighlighted: (BOOL)highlighted animated: (BOOL)animated
{
    // don't highlight
}

- (void)setSelected: (BOOL)selected animated: (BOOL)animated 
{
    // don't select
    //[super setSelected:selected animated:animated];
}
68
ответ дан 27 November 2019 в 02:59
поделиться
cell.selectionStyle = UITableViewCellSelectionStyleNone;
61
ответ дан 27 November 2019 в 02:59
поделиться

Как насчет этого?

// disable user interaction
cell.userInteractionEnabled = NO;
-12
ответ дан 27 November 2019 в 02:59
поделиться