uitableview 강조 표시를 비활성화하지만 개별 셀 선택 허용


83

셀을 탭하면 행이 선택되고 강조 표시됩니다. 이제 내가 원하는 것은 강조 표시를 비활성화하지만 선택을 허용하는 것입니다.


8
cell.selectionStyle = UITableViewCellSelectionStyleNone;당신이 추가 cellForRowAtIndexPath방법
Shruti

답변:


182

스토리 보드에서 셀의 선택 스타일을 "없음"으로 설정할 수 있습니다.

여길 봐

또는 코드에서 :

cell.selectionStyle = UITableViewCellSelectionStyleNone;

Swift 3 :

cell.selectionStyle = UITableViewCellSelectionStyle.none

Swift 4 이상 :

cell.selectionStyle = .none

"없음"을 선택하면 강조 표시된 상태의 작업 기능을 잃게됩니다. 그 상태를 잃지 않고 배경을 없음 / 흰색으로 만들 수 있습니까?
Sean

이것은 어떤 기능으로 갈까요? "cellForRowAt"이 맞나요?
Daniel Springer


26

UITableViewCellselectedBackgroundView색상을 투명으로 변경합니다 .

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

또는 특정 셀에 대해 설정하려면 :

cell.backgroundView = clearView


1
cell.selectionStyle = UITableViewCellSelectionStyleNone때때로 Apple의 애니메이션 로직 내부에서 무언가를 깨뜨리기 때문에 이것이 최상의 옵션 입니다.
orkenstein 2016

다음 .. 대신 사용UITableViewCell.appearance().selectionStyle = .None
VAIBHAV

셀 내에 선택 가능한 항목이있는 경우 사용하는 것이 좋습니다.
Matthew Korporaal

탁월한 솔루션. 이 코드를 셀의 awakeFromNib()함수 에 넣으면 효과가 있습니다
Dan2899

이 옵션을 사용하면 테이블보기 셀 구분선이 보이지 않습니다.
jonye ._. jin 2010-08-04

8

셀 선택 스타일을 없음으로 설정하십시오-

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

이것은 당신의 문제를 해결할 것입니다



6

Swift의 경우 :

UITableViewCell.selectionStyle = UITableViewCellSelectionStyle.None;

또는 신속하게 셀을 서브 클래 싱 할 때 :

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)
}

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];
   . . . . .. 
}

0

들어 스위프트 (5) 가장 좋은 방법은 다음과 같습니다

cell.selectionStyle = .none

-1

빠른 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
}()
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.