꾸준히 안타치기
Delegation패턴을 이용한 커스텀쎌 버튼 클릭 본문
델리게이트란? 대리자
하나의 객체가 다른 객체를 대신해 동작 또는 조정할 수 있는 것을 의미
객체가 해야할 일을 부분적으로 확장하여 대신해서 처리를 해준다.
하나의 객체가 모든일을 처리하는 것이 아니라 처리해야할 일 중의 일부를 다른 객체에 넘기는 것을 말한다.
그 업무를 잘하는 사람에게 일을 대신해달라고 요청하는 것
델리게이트는 쓰면 뭐가 좋은가?
기능을 위임할 수 있는 객체가 있다는 것은 그만큼 직접 구현해야하는 부분이 적다는 뜻 -> 효율성이 높다.
큰 규모의 프로그램을 빠르게 작성할수 있다.
델리게이트는 왜 쓰나?
델리게이트는 특정한 상황에 대리자에게 메시지를 전달하고, 응답을 받기 위한 목적으로 사용된다.
처리하라고 시키는 객체 (프레임워크 객체 ) | --- 요청 ->>>> | 대신 처리해줄 객체 (ViewController ) 요청을 받아 기능을 구현함 |
TableView의 동작을 커스텀할때, 커스텀셀이 테이블뷰에게 위임을 요청한다.
상황 | 커스텀셀에 버튼이 하나 있다. 델리게이트패턴을 이용해서 버튼을 눌렀을때 커스텀셀이 작동하도록 한다.
커스텀셀이 위임을 요청 -> | 뷰컨트롤러의 테이블뷰가 요청을 받고, 커스텀셀의 일을 대신해줌 |
커스텀셀 - 위임요청
뷰컨트롤러 - 위임받음
참고1 - 야곰닷넷에서 설명한 내용으로 다시 정리해보았다, 야곰부스트코스
참고2
https://kunkunwoo.tistory.com/224
참고3 - 델리게이션
https://www.youtube.com/watch?v=uydI8cqZSRA
예제
TableView cell
테이블뷰 셀클래스를 만들고 연결
테이블뷰 셀에 버튼 클릭액션을 만든다.
프로토콜을 정의한다. onClickCell(index: Int)
델리게이트를 정의하고, 버튼을 클릭했을때 게시글의 indexPath를 가져오도록 한다.
tableView
cellForRowAt에 커스텀셀을 연결한다.
셀에 델리게이트를 설정한다.
cell.index = indexPath 해준다.
프로토콜 구현부를 작성한다.( 셀 클릭시에 indexPath를 가져온다. / indexPath에 해당하는 데이터내용을 가져온다.)
https://www.youtube.com/watch?v=fzjtvq-jC4E
'iOS > Basic Study' 카테고리의 다른 글
didSet 프로퍼티옵저버 (0) | 2022.08.23 |
---|---|
userDefault / 저장 (0) | 2022.08.11 |
UIIMage 사이즈 줄이기 메소드 (0) | 2022.03.24 |
Property List / CoreData - 데이터 저장방법 (0) | 2022.02.09 |
xcode 단축키 (0) | 2022.01.30 |