인프런 커뮤니티 질문&답변

audtjs9987님의 프로필 이미지
audtjs9987

작성한 질문수

UIKit - iOS14 실무 가이드 <iOS앱 진짜 개발자 되기>

Pass Data 방법 중 delegation pattern에 관한 질문

해결된 질문

작성

·

140

0

안녕하세요 :)

 

데이터를 전달하는 6가지 방법 중 delegation pattern 에 관해서 질문드립니다.

 

데이터를 전달하는 방법 영상에서 설명해주실 때 ViewController 화면에 있는 버튼을 눌러 DelegateDetailViewController 화면으로 이동한 다음, DelegateDetailViewController 화면에 있는 버튼을 누르면 다시 ViewController로 이동하면서 데이터를 넘겨줘서 ViewController 화면에 있는 label 값을 바꿨습니다.

 

그런데 위의 상황이 아니라 Viewcontroller에서 DelegateDetailViewController 화면으로 이동하면서 데이터를 전달하고 싶으면 delegation pattern 방법을 어떻게 써야할까요??

 

 

+추가 질문 

A 화면에서 B화면으로 이동하고 다시 B화면에서 A화면으로 이동하면서 데이터를 전달하는 상황일 때만 Delegation pattern으로 데이터를 전달할 있는건가요??

답변 2

1

iOS Developer - 이정님의 프로필 이미지
iOS Developer - 이정
지식공유자

안녕하세요

delegate패턴을 이용해 데이터를 전달하는 이유가

바로 전달할 수 없고 대신 전달해줄 무언가가 필요해서 입니다.

 

A에서 -> B 뷰컨으로 갈 때 A에서는 B를 인스턴스화 시키고  B로 넘어갑니다.

그러니 A는 B의 정보를 갖고 있고 B의 멤버에 접근이 바로 가능해서 바로 B에 데이터를 넘겨줄 수 있습니다.

 

그런데 반대로 B에서는 A의 정보를 가지고 있지 않습니다.

B에서 pop이나 dismiss를 하면 마치 B에서 A로 가는것처럼 보이지만

실제로는 B에서 A로 가는게 아니고 B를 현재 화면에서 없애는 것이고,

그러면서 뒤에있던 A가 보이게 되는 것입니다.

그래서 B는 A의 정보를 모르고 있으니 A에 데이터를 주려면 A의 정보를 알고 있는게 필요한데 그 역할을 하는 대리자가 delegate패턴 입니다.

그러므로 B에서A로 갈 때 delegate패턴을 이용해서 데이터를 넘기는 것입니다.

 

0

audtjs9987님의 프로필 이미지
audtjs9987
질문자

아하! 이해 되었습니다! 빠른 답변 감사드립니다 :) 

audtjs9987님의 프로필 이미지
audtjs9987

작성한 질문수

질문하기