내가 생성한 하위 객체에서 이벤트를 상위객체로 보내는 방법! – 1부 Delegate패턴

뷰에서 팝업창을 하나 만든다고 가정을 하자. 팝업창에는 여러가지 정보나 버튼이 있고 그 버튼을 누르면 팝업창을 생성한 상위 뷰에 선택한 메뉴가 보이는 구조라고 하면 이걸 어떻게 구현할까? 팝업을 생성한 뷰에서는 팝업창을 제어하기가 쉽다. 하지만 팝업창에서는 상위뷰를 제어하는게 생각처럼 쉽지는 않다. 이럴때 쓸수있는 패턴들이 있다. 대표적으로 Delegate 패턴을 시작으로 NSNotificationCenter, singletone, block, keyValue….등등  시간이 날때마다 하나씩 포스팅을 해보도록 하겠다. 오늘은 그 1부로 가장 많이 쓰인다고 생각되는 Delegate패턴을 사용하겠다. 해당 패턴은 iOS앱에서 자주 쓰이는 UITableView를 사용하려면 반드시 사용해야만 하는 패턴이다! 그래서 알게 모르게 눈에 익을것이다.

일단 델리게이트 패턴을 만드려면  새로 생성할 객체에 ‘이 객체는 델리게이트를 사용합니다’라고 헤더파일에 선언을 해줘야한다.

 

상위 뷰의 헤더에 해당 델리게이트를 사용한다고 선언해준다

델리게이트를 통해 호출되었을때 실제로 구현될 메소드를 작성한다

 

마지막으로 하위뷰에서 상위뷰로 가야하는 이벤트에 알맞게 작업을 해준다.

 

해당 소스를 기준으로 작업을 하면 내가 만든 하위뷰에서 상위뷰의 라벨 색상을 바꾼 앱을 만들 수 있다. 참 쉽죠?스크린샷 2016-03-16 오후 4.42.07

72-001

나는 처음 앱을 만들때 이 패턴을 이해하지 못해서 거의 일주일은 삽질을 했는데 ….이 포스팅을 보시는분은 30분만에 꺠우칠수있기를 빕니다. 혹시라도 잘 이해가 안되면 댓글 남겨주시면 최선을 다해 답변 드리겠습니다 😀

 

예제 다운로드

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.