Как я могу отключить выбор UITableView? - PullRequest
1152 голосов
/ 10 октября 2008

При нажатии строки в UITableView строка выделяется и выделяется. Можно ли отключить это, так что нажатие строки ничего не делает?

Ответы [ 36 ]

7 голосов
/ 21 августа 2013

Хотя это лучшее и самое простое решение, чтобы ряд не отображал выделение во время выделения

cell.selectionStyle = UITableViewCellSelectionStyleNone;

Я также хотел бы предложить, что иногда полезно кратко показать, что строка была выбрана, а затем отключить ее. Это предупреждает пользователей с подтверждением того, что они намеревались выбрать:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
     [tableView deselectRowAtIndexPath:indexPath animated:NO];
...
}
6 голосов
/ 14 апреля 2018

Непосредственное отключение выделения TableViewCell в раскадровке

enter image description here

6 голосов
/ 12 июля 2014

Вы можете использовать:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

в ячейке для строки в методе индекса пути вашего UITableView.

Также вы можете использовать:

[tableView deselectRowAtIndexPath:indexPath animated:NO];

в табличном представлении сделал выбор метода индекса.

6 голосов
/ 18 января 2013

Чтобы отключить подсветку UItableviewcell

cell.selectionStyle = UITableViewCellSelectionStyleNone;

И не должен позволять пользователю взаимодействовать с клеткой.

cell.userInteractionEnabled = NO;
6 голосов
/ 14 января 2014

Вы также можете установить цвет фона на Очистить, чтобы достичь того же эффекта, что и UITableViewCellSelectionStyleNone, если вы не хотите / не можете использовать UITableViewCellSelectionStyleNone.

Вы будете использовать код, подобный следующему:

UIView *backgroundColorView = [[UIView alloc] init];
backgroundColorView.backgroundColor = [UIColor clearColor];
backgroundColorView.layer.masksToBounds = YES;
[cell setSelectedBackgroundView: backgroundColorView];

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

5 голосов
/ 15 мая 2015

Вы можете использовать selectionStyle свойство UITableViewCell

 cell.selectionStyle = UITableViewCellSelectionStyleNone;

или

 [cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Кроме того, не используйте ниже делегат

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { ... }

Если вы создали файл Xib / Storyboard, вы можете изменить setUserInteractionEnabled свойство tableview для No , сняв отметку. Это сделает ваш просмотр таблицы только для чтения.

5 голосов
/ 19 февраля 2015

Быстрое решение с пользовательской ячейкой:

import Foundation

class CustomTableViewCell: UITableViewCell
{
  required init(coder aDecoder: NSCoder)
  {
    fatalError("init(coder:) has not been implemented")
  }

  override init(style: UITableViewCellStyle, reuseIdentifier: String?)
  {
    super.init(style: style, reuseIdentifier: reuseIdentifier)
    self.selectionStyle = UITableViewCellSelectionStyle.None
  } 
}
5 голосов
/ 04 декабря 2014

Вы также можете сделать это из раскадровки. Щелкните ячейку табличного представления и в инспекторе атрибутов под ячейкой табличного представления измените раскрывающийся список рядом с «Выделением» на «Нет».

5 голосов
/ 10 мая 2013

Вы можете использовать это

cell.selectionStyle = UITableViewCellSelectionStyleNone;
5 голосов
/ 31 июля 2014
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
[cell setSelected:NO animated:NO];
[cell setHighlighted:NO animated:NO];

Удачного кодирования !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...