728x90
contentView를 보니 예전에 내부 Button이 동작하지 않는 이유를 찾느라 고생했던 기억이 나서 정리했다.
Notion에 정리한 내용을 옮겨왔다.
발생가능한 이슈
- UITableViewCell 내부에 배치한 UIButton에 대해 Delegate패턴, Closure패턴을 활용해도 동작하지 않는 상황
요약설명
- UITableViewCell 위에 ContentView가 있다.
- Cell을 커스텀하기 위해선 ContentView 위에 다른 view들을 배치해야 한다.
- 그렇지 않으면 우리가 보는 것과 달리 ContentView를 클릭하게 되며, 다양한 문제를 겪을 수 있다.
설명
애플 공식문서에서는 다음과 같이 설명한다.
- contentView는 cell 객체의 content view…라는 재귀같은 설명을 하고 있다.
- UITableViewCell 객체의 content view는 컨텐츠에 대한 cell을 보여주는 기본 superview이다.
- 만약 cell을 커스텀하기 위해 cell 내부에 추가적인 view를 넣고 싶으면, view를 content view에 추가해서 cell이 editing mode로 전환되거나 벗어날 때 적절한 위치에 배치되도록 해야 한다
// TableViewCell 내부 layout을 잡을 때, 이와 같이 해야 한다.
contentView.addSubView(UIView)
만약 contentView.addSubView(UIButton) 등의 방식을 사용하지 않는다면 겉으로 보기에는 정상적인 것처럼 보여지나, 실제로는 contentView 아래에 Button이 있는 것으로 인식되어 Button을 클릭할 수 없게 된다.
즉, 우리는 Button을 클릭하는 줄 알고 있지만, ContentView를 클릭하고 있는 셈이다.
참고자료
반응형
'🍎 iOS > DevNote' 카테고리의 다른 글
[Github] 우리는 왜 Squash & Merge와 No Fast-forward Merge 방식을 채택했을까? (2) | 2024.02.04 |
---|---|
[Swift] @main (0) | 2023.07.30 |
[Swift] 프로토콜(Protocol) 개념 정리 (1) | 2023.05.26 |
[Swift] 옵셔널(Optional) 개념 정리 (0) | 2023.05.21 |
[iOS] Delegate 패턴을 알아보자 (0) | 2023.03.30 |
댓글