[Swift] instantiateViewController를 사용해서 뷰 생성하기

 

안녕하세요. 미닛메이드 Minnit 입니다😌

 

이번에는 instantiateViewController라는 swift에서 사용되는

Instance Method에 대해 알아보겠습니다.

 


apple의 공식문서를 확인해보면

 

" 지정된 식별자를 가지고 스토리보드의 데이터를 초기화 해 뷰 컨트롤러를 만든다 " 

라고 쓰여있는 걸 확인할 수 있습니다 !

 

 

🔍 여기서 잠깐 , identifier 무엇일까요?

 

identifier은 스토리보드에서 뷰 컨트롤러를 구분할 수 있게 만들어 주는

뷰의 별명이라고 할 수 있습니다.

 

여기서는 "FirstVC" 라는 식별자를 이 뷰에게 부여한 것입니다.

 

 

다시 앞으로 가서, 

instantiateViewController의 설명에서 제가 생각하는 가장 중요한 포인트는

 

❗️ 데이터 초기화 ❗️입니다.

 

instantiateViewController를 사용하여 뷰 컨트롤러를 만들게 될 때마다 

데이터는 초기화되고 새로운 인스턴스가 생성되게 됩니다! 

그렇기 때문에 instantiateViewController는 새로운 뷰로 넘어갈 때  사용해야 합니다.

 

	guard let dvc = self.storyboard?.instantiateViewController(identifier: "nextVC") else {

		return
	}
        
	self.present(dvc, animated: true, completion: nil)

 

그런데 만약, 이전에 생성했던 뷰로 넘어가고 싶을 때

instantiateViewController를 사용하면 어떻게 될까요?

( A 뷰컨 -> B 뷰컨 에서 다시 A뷰컨으로 가고 싶다면? )

 

instantiateViewController를 통해서 넘어간 A 뷰컨은 

이전에 생성했던 뷰가 맞다고 할 수 있을까요...!?

제가 생각하는 답은 NO❌ 입니다!

 

다시 A 뷰컨으로 넘어갈 때 instantiateViewController를 사용해서 넘어간다면 

다시 데이터가 초기화되고 새로운 인스턴스가 생성되기 때문에 

물론 A 뷰 이지만, B로 넘어오기전에 생성됐던 데이터와는 다릅니다 ~

 

 

그래서 이전의 뷰로 돌아갈 때 이전에 할당했던 데이터를 다시 보고싶다~ 한다면

instantiateViewController 와는 다른 Method를 사용해서 이동해야합니다☺️

 


 

Instance Method인  instantiateViewController에 대해서 

apple 공식문서를 통해 자세히 알아보았습니다 !

 

혹시 틀린 점 있거나 질문은 댓글 남겨주세요!!

감사합니다 :)