지난 글에는 화면 전환 방법 중 하나인 Segue에 대해 포스팅했습니다!
이번 글에선 화면 간 데이터 전달에 대해 포스팅해 보겠습니닷 😀
✏️ source: segue의 출발 뷰 컨트롤러
✏️ destination: segue의 도착 뷰 컨트롤러
prepareForSegue:sender:
메서드를 사용하면 편리함: Notifies the view controller that a segue is about to be performed.
세그가 발생할 것을 뷰 컨트롤러에게 알림
- 전처리 메서드
- segue를 실행하기 직전에 시스템에 의해 자동으로 호출됨
✏️ segue를 실행하기 직전에 시스템에 의해 자동으로 호출된다? 🤔 그러면 이때 다음 화면에게 데이터를 전달하면 되지 않을까?
✏️ 다음 화면의 프로퍼티에 데이터를 전달하려면, 다음 화면의 뷰 컨트롤러에 접근할 수 있어야 함 ➡️ 타입 캐스팅을 이용하자!
segue.destination
을 SecondViewController로 다운 캐스팅한 후 옵셔널 바인딩해 줌viewController
의 name
에 전달하고 싶은 데이터 대입viewController
의 타입은 SecondViewController 입니닷)(delegate는 그냥 예제를 통해 이해하는 게 제일 좋았던 것 같당)
이전 화면을 첫 번째 뷰 컨트롤러,
전환된 화면을 두 번째 뷰 컨트롤러라고 표시하겠습니닷
✏️ protocol
선언
✏️ delegate
변수 선언(메모리 누수 방지를 위해 weak으로 선언해야 한다고 한당. 아직 잘 모르는 부분이라 더 찾아본 뒤에 기록하기)
✏️ self.delegate?.sendData(name:)
: sendData
를 위임하겠다고 선언
segue.destination
을 이용하여 뷰 컨트롤러 인스턴스를 가져와야 함viewController.delegate = self
: viewController가 시키는 일을 자신이 하겠다고 선언+) 데이터를 서로 전달하는 코드 구현
💻 https://github.com/minnnidev/SeguePassingData