해결된 질문
작성
·
140
0
안녕하세요 :)
데이터를 전달하는 6가지 방법 중 delegation pattern 에 관해서 질문드립니다.
데이터를 전달하는 방법 영상에서 설명해주실 때 ViewController 화면에 있는 버튼을 눌러 DelegateDetailViewController 화면으로 이동한 다음, DelegateDetailViewController 화면에 있는 버튼을 누르면 다시 ViewController로 이동하면서 데이터를 넘겨줘서 ViewController 화면에 있는 label 값을 바꿨습니다.
그런데 위의 상황이 아니라 Viewcontroller에서 DelegateDetailViewController 화면으로 이동하면서 데이터를 전달하고 싶으면 delegation pattern 방법을 어떻게 써야할까요??
+추가 질문
A 화면에서 B화면으로 이동하고 다시 B화면에서 A화면으로 이동하면서 데이터를 전달하는 상황일 때만 Delegation pattern으로 데이터를 전달할 수 있는건가요??
답변 2
1
안녕하세요
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