когда вы нажимаете на ячейку, строка выбирается и выделяется. Теперь я хочу отключить выделение, но разрешить выделение. Есть ли способ обойти это. Есть вопрос, который отвечает на это, но он отключает как выделение, так и выделение.
когда вы нажимаете на ячейку, строка выбирается и выделяется. Теперь я хочу отключить выделение, но разрешить выделение. Есть ли способ обойти это. Есть вопрос, который отвечает на это, но он отключает как выделение, так и выделение.
Ответы:
Вы можете просто установить стиль выделения ячейки на «Нет» в Раскадровке:
Или из кода:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
Для Swift 3:
cell.selectionStyle = UITableViewCellSelectionStyle.none
Для Swift 4 и выше:
cell.selectionStyle = .none
Изменить UITableViewCell
«S selectedBackgroundView
цвет прозрачный.
let clearView = UIView()
clearView.backgroundColor = UIColor.clearColor() // Whatever color you like
UITableViewCell.appearance().selectedBackgroundView = clearView
или установить для конкретной ячейки:
cell.backgroundView = clearView
cell.selectionStyle = UITableViewCellSelectionStyleNone
иногда что-то ломает глубоко внутри логики анимации Apple.
UITableViewCell.appearance().selectionStyle = .None
awakeFromNib()
функцию ячейки
в быстром 3
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}
Чтобы добавить собственный цвет, используйте приведенный ниже код. И чтобы было прозрачно использовать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)
}
Для Objc:
[setSelectionStyle ячейки: UITableViewCellSelectionStyleNone];
- (void)viewDidLoad {
[super viewDidLoad];
_tableView.allowsSelection = YES;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
.. .. .. ..
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
. . . . ..
}
Для Swift 5 лучший способ:
cell.selectionStyle = .none
Вот решение для 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
}()
cell.selectionStyle = UITableViewCellSelectionStyleNone;
добавьте это в свойcellForRowAtIndexPath
метод