Swift/오류 개발자
Swift | TableView에서 특정 영역만 선택이 가능하도록 만들기
UDDT
2025. 3. 9. 17:33
TableView에서 특정 영역만 선택이 가능하도록 만들기
⎮ 미리보기
⎮ 일반적인 TableView
TableView는 Row 전체 영역이 선택되는 것이 당연하다.
어떻게 하면 TableView의 특정 영역만 선택이 가능하도록 설정할 수 있을까?
1. TableView Row의 선택 영역을 비활성화하고
2. 특정 영역만 선택이 가능하도록 활성화 시켜주면 된다.
⎮ hitTest를 활용하여 특정 영역 선택이 가능하도록 구현하기
1. 클래스 추가하기(UITableViewCell을 상속받는 커스텀 셀 만들기)
2. mainCell의 Class를 CustomTableViewCell로 설정
3. Outlet으로 연결
4. hitTest 메서드 오버라이드 하기
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
let convertedPoint = convert(point, to: selectableView)
if selectableView.bounds.contains(convertedPoint) {
return selectableView
}
// 그 외 영역 터치는 무시 (nil 반환)
return nil
}
지금 이 상태로는 빌드를 해도, 특정 영역만 선택되지는 않는다.
TableView의 셀 선택 효과가 제거 되지 않았기 때문이다.
6. TableView에 있는 셀 선택 효과 제거
override func awakeFromNib() {
super.awakeFromNib()
self.selectionStyle = .none // 셀 선택 효과 제거
}
⎮ UITableViewDelegate 채택해서 로그 출력하기
1. UITableViewDelegate 연결하기
2. ViewController에 UITableViewDelegate 채택하기
3. viewDidLoad()에 delegate 코드 추가
mainTableView.delegate = self
4. ViewController에 didSelectRowAt 코드 추가
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("\(indexPath.row)번째 셀이 선택됨!")
tableView.deselectRow(at: indexPath, animated: false) // 선택 효과 제거
}
5. 결과 확인하기