꾸준히 안타치기

Delegation패턴을 이용한 커스텀쎌 버튼 클릭 본문

iOS/Basic Study

Delegation패턴을 이용한 커스텀쎌 버튼 클릭

글자줍기 2022. 5. 19. 15:48
반응형

델리게이트란? 대리자 

하나의 객체가 다른 객체를 대신해 동작 또는 조정할 수 있는 것을 의미

객체가 해야할 일을 부분적으로 확장하여 대신해서 처리를 해준다.

하나의 객체가 모든일을 처리하는 것이 아니라 처리해야할 일 중의 일부를 다른 객체에 넘기는 것을 말한다.

그 업무를 잘하는 사람에게 일을 대신해달라고 요청하는 것

 

델리게이트는 쓰면 뭐가 좋은가?

기능을 위임할 수 있는 객체가 있다는 것은 그만큼 직접 구현해야하는 부분이 적다는 뜻 -> 효율성이 높다.

큰 규모의 프로그램을 빠르게 작성할수 있다.

 

델리게이트는 왜 쓰나?

델리게이트는 특정한 상황에 대리자에게 메시지를 전달하고, 응답을 받기 위한 목적으로 사용된다.

처리하라고 시키는 객체 (프레임워크 객체 ) --- 요청 ->>>> 대신 처리해줄 객체 (ViewController ) 요청을 받아 기능을 구현함 

 

TableView의 동작을 커스텀할때,  커스텀셀이 테이블뷰에게 위임을 요청한다.

상황 |  커스텀셀에 버튼이 하나 있다. 델리게이트패턴을 이용해서 버튼을 눌렀을때 커스텀셀이 작동하도록 한다.

커스텀셀이 위임을 요청 -> 뷰컨트롤러의 테이블뷰가 요청을 받고, 커스텀셀의 일을 대신해줌

 

커스텀셀 - 위임요청

뷰컨트롤러 - 위임받음

참고1 - 야곰닷넷에서 설명한 내용으로 다시 정리해보았다, 야곰부스트코스

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/

참고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
Comments