적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

초보 iOS 개발자의 일상/개발 업무

[Swift iOS] Add UIButton actions in UITableView Cells with Code

hongssup_ 2022. 7. 11. 17:15
반응형

UITableView Cell 안에 UIButton을 넣어 터치 이벤트를 주려고 했는데, 아무리 해도 버튼 tap 인식이 안되는 것이었다. 

대부분의 예제가 스토리보드를 사용해서 구현을 했던데, 코드로 구현을 했더니 아주 사소한? 문제로 몇 시간을 날렸다 ㅎㅎㅎ

 

우선 내가 사용한 방법은 Delegate 패턴을 사용하여 터치 이벤트를 추가해주었다. 

tableView header에서는 이 방법으로 버튼 터치가 잘만 되는데, cell에서는 아무리 해도 터치 이벤트 적용이 안되는 거야 왜ㅐㅐ

문제는 이벤트 추가가 아니라 cell 내에서 UIButton 을 추가할 때 있었다.. ㅎㅎㅎ 

cell 내에서 코드로 UIButton을 추가할 때 그냥 self.addSubview(button) 이렇게 해주면 투명한 ContentView가 더 상위에 자리잡아 터치 이벤트가 작동을 안한다는...

self.contentView.addSubview(button) 해주니까 허무하게도 아주 작동이 잘되더라. ㅎㅎㅎ

 

스토리보드를 사용하여 cell 내에 object를 넣으면, 자동으로 Cell 의 ContentView 내에 object가 추가되는 것을 볼 수 있다. 

따라서 코드로 addSubview를 해줄 때도 cell에다 직접 추가하는 것이 아니라 

앞으로는 cell의 contentView에다 추가를 하도록 self.contentView.addSubview( )를 사용하는 습관을 들여야겠다..

 

참고 : 쩝쩝이 - IButton.addTarget이 작동 안 될 때 In Code

 

 

 

UIButtonAction 구현 방법들 

참고 : https://leechamin.tistory.com/500

 

[iOS] UITableViewCell내 UIButton 액션이 작동하지 않을 때 (feat. tag/delegate/closure)

아무렇지 않게 tableView의 CustomCell에 UIButton을 넣어주고 addTarget을 하여 액션을 넣어주고 있었다. . . 응??🧐 . . 당연히 cell에 넣어주고 action을 주면 작동을 하리라 생각했으나 되지 않았다..! 바로..

leechamin.tistory.com

 

Delegate 패턴 이용하여 cell 내부 버튼 이벤트 처리

https://yagom.net/forums/topic/delegation-%ED%8C%A8%ED%84%B4%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-cell%EB%82%B4%EB%B6%80%EC%9D%98-%EB%B2%84%ED%8A%BC-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EC%B2%98%EB%A6%AC%ED%95%98%EA%B8%B0/

 

Delegation 패턴을 이용하여 Cell내부의 버튼 이벤트 처리하기 - 야곰닷넷

앱잼동안 구현했던 부분중에 테이블 뷰 셀 안에 버튼을 넣어서 버튼 액션을 다르게 처리해야 했었다. 옆에 […]

yagom.net

https://m.blog.naver.com/jdub7138/220937372865

 

[iOS Swift] 객체간 소통 - Callback, Notification, Delegation

iOS에서 객체들끼리 교신하는 대표적인 방법으로는 Callback, Notification, Delegation 이렇게 3가지...

blog.naver.com

콜백 클로저 / notification 패턴도 사용해보기? 알아보기?

728x90
반응형