вимкнути підсвічування uitableview, але дозволити виділення окремих комірок


83

коли ви натискаєте на клітинку, рядок отримує виділення та виділення. Тепер я хочу відключити виділення, але дозволити виділення. Чи є спосіб обійти це. Є питання, яке відповідає на це, але воно вимикає як виділення, так і виділення.


8
cell.selectionStyle = UITableViewCellSelectionStyleNone;додайте це у свій cellForRowAtIndexPathспосіб
Шруті

Відповіді:


180

Ви можете просто встановити стиль вибору комірки на "Немає" з розкадрування:

Дивіться тут

Або з коду:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

Для Swift 3:

cell.selectionStyle = UITableViewCellSelectionStyle.none

Для Swift 4 і вище:

cell.selectionStyle = .none

Коли я вибираю "немає", я втрачаю працездатність виділеного стану. Чи можу я зробити фон не білим / не білим, не втрачаючи цього стану?
Шон,

В яку функцію це піде? Я здогадуюсь "cellForRowAt"?
Даніель Спрінгер,

Ви повинні робити це в камері, а не в таблиці
Салем Бінмус

26

Змінити UITableViewCell«S selectedBackgroundViewколір прозорий.

    let clearView = UIView()
    clearView.backgroundColor = UIColor.clearColor() // Whatever color you like
    UITableViewCell.appearance().selectedBackgroundView = clearView

або встановити для певної комірки:

cell.backgroundView = clearView


1
Це найкращий варіант, оскільки cell.selectionStyle = UITableViewCellSelectionStyleNoneіноді щось глибоко розбиває логіку анімації Apple.
orkenstein

тоді вживайте замість цього ..UITableViewCell.appearance().selectionStyle = .None
vaibhav

Це приємно використовувати, якщо у вас є елементи, які можна вибрати в клітці.
Matthew Korporaal

Відмінне рішення. Поміщення цього коду у функцію клітини awakeFromNib()спрацьовує
Dan2899,

Цей параметр робить рядок роздільника комірок подання таблиці не видимим.
jonye ._. Jin

8

Спробуйте встановити для стилю вибору комірки значення Немає -

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Це вирішить вашу проблему



6

Для Свіфта:

UITableViewCell.selectionStyle = UITableViewCellSelectionStyle.None;

Або коли ви швидко підкласуєте клітинку:

class CustomCell : UITableViewCell {

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!
        selectionStyle = .None
    }

}


2

Щоб додати власний колір, використовуйте наведений нижче код. І зробити це прозорим використаннямalpha: 0.0

cell.selectedBackgroundView = UIView(frame: CGRect.zero)
cell.selectedBackgroundView?.backgroundColor = UIColor(red:0.27, green:0.71, blue:0.73, alpha:1.0)

Якщо ви використовуєте власний колір і хочете надати йому вигляд закругленого кута, використовуйте:

cell.layer.cornerRadius = 8

Крім того, використовуйте це для кращої анімації та відчуття

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    tableView.deselectRow(at: indexPath, animated: true)
}

1

Для тих, хто шукає програмний спосіб у Swift 3

cell.selectionStyle = UITableViewCellSelectionStyle.none


1

Ви можете встановити властивість виділення самої комірки в розкадруванні введіть тут опис зображення


0

Для Objc:

[комірка setSelectionStyle: UITableViewCellSelectionStyleNone];

- (void)viewDidLoad {
  [super viewDidLoad];
  _tableView.allowsSelection = YES;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    .. .. .. .. 
   [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
   . . . . .. 
}


-1

Ось рішення для swift 3, працює навіть у режимі редагування

cell.selectionStyle = .gray
cell.selectedBackgroundView = {

    let colorView = UIView()
    colorView.backgroundColor = UIColor.black.withAlphaComponent(0.0)
    //change the alpha value or color to match with you UI/UX

    return colorView
}()
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.