• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

활용-8 앱 / 디테일화면 만들기 (활용앱 67강) 질문있습니다.

23.01.14 11:41 작성 조회수 212

1

안녕하세요. 앨런님 강의 잘 듣고 있습니다. 좋은 강의 감사합니다. 활용앱 67강 듣고 질문 드립니다. 영상의 좀 마지막 부분인데 뷰컨트롤러에서 테이블뷰 셀의 Member데이터를 DetailViewController로 넘기고 여기로 넘어온 Member데이터를 다시 DetailView에 넘겨서 셀 클릭시 다음 화면에 데이터를 표시하도록 구현을 했는데 궁금한것은 loadView함수가 viewDidLoad보다 먼저 실행이 되는걸로 알고있는데 loadView로 그럼 현재 DetailViewController의 view를 갈아 끼우고 viewDidLoad를 불러서 데이터를 DetailView에 전달하는데 그럼 데이터를 전달한 후에 한번더 view = DetailView로 정보가 저장된 뷰를 다시 끼워주는게 맞는거아닌지.. 이렇게 안해도 데이터가 잘 표시되는 이유가 궁금합니다!

답변 1

답변을 작성해보세요.

0

네 안녕하세요 khs50851님!

뷰는 다시 교체해줄 필요가 없습니다.
데이터가 변하면 ==> 뷰 내부에서 그리는 내용이 자동으로 바뀌게 되어있는 것이라고 보시면 될 것 같아요.


왜나면, 여기서 디테일뷰의 member변수의 데이터가 생기거나, 변하거나, 교체되면 didSet (계산속성 또는 연산프로퍼티)가 자동으로 불리게 되어있습니다. 즉, 뷰를 교체하는 것이 아니라.. 데이터를 교체해주면 화면은 언제든지 다시 표시가 될 수 있습니다.

didSet이라는 것이, 저장속성이 변하면 (여기서는 var member: Member? 저장속성) 언제든지 다시 호출되도록 구현이 되어있으므로, loadView시점이후에, viewDidLoad가 불릴때 멤버가 전달이 되도 당연히 디테일뷰에 잘 표시가 되겠죠.

(가장 좋은 확인 법은 loadView, viewDidLoad, (디테일뷰의) didSet 에 print를 통해 한번 출력해보시는 거겠죠.)

모든 구현이 마찬가지이지만, 데이터가 바뀐다고 뷰를 다시 교체하는 방식으로 구현하지는 않습니다. 데이터만 바꿔주면, 뷰는 해당 내용만 다시 그리는 것이죠. 앞에서 배웠던 내용에서도 마찬가지입니다. 주사위 게임에서도 버튼을 누르면 ===> 이미지뷰에 담겨있던 이미지만 바꿔주는 것이죠. 뷰 전체를 교체하는 것이 아니라요.

 

감사합니다. :)