когда вы нажимаете на ячейку, строка выбирается и подсвечивается. Теперь я хочу отключить выделение, но разрешить выделение. Есть ли способ вокруг него. Существует вопрос, который отвечает на это, но он отключает выбор и выделение.
Отключить подсветку uitableview, но разрешить выбор отдельных ячеек
Ответ 1
Вы можете просто установить стиль выбора ячейки в "Нет" из раскадровки:
Или из кода:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
Для Swift 3:
cell.selectionStyle = UITableViewCellSelectionStyle.none
Для Swift 4 и выше:
cell.selectionStyle = .none
Ответ 2
Измените цвет UITableViewCell
selectedBackgroundView
на прозрачный.
let clearView = UIView()
clearView.backgroundColor = UIColor.clearColor() // Whatever color you like
UITableViewCell.appearance().selectedBackgroundView = clearView
или установить для конкретной ячейки:
cell.backgroundView = clearView
Ответ 3
Попробуйте установить стиль выбора ячейки в None -
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
Это решит вашу проблему.
Ответ 4
Для Swift 3.0:
cell.selectionStyle = .none
Ответ 5
Для Swift:
UITableViewCell.selectionStyle = UITableViewCellSelectionStyle.None;
Или когда вы подклассифицируете ячейку в swift:
class CustomCell : UITableViewCell {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
selectionStyle = .None
}
}
Ответ 6
в быстрой 3
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}
Ответ 7
Для тех, кто ищет программный способ в Swift 3
cell.selectionStyle = UITableViewCellSelectionStyle.none
Ответ 8
Вы можете установить свойство выбора самой ячейки в раскадровке
Ответ 9
Для объекта Objc:
[cell setSelectionStyle: UITableViewCellSelectionStyleNone];
- (void)viewDidLoad {
[super viewDidLoad];
_tableView.allowsSelection = YES;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
.. .. .. ..
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
. . . . ..
}
Ответ 10
Чтобы добавить собственный цвет, используйте код ниже. И чтобы сделать это прозрачным, используйте 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)
}
Ответ 11
Вот решение для 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
}()
Ответ 12
Для Swift 5 лучший способ это:
cell.selectionStyle = .none