1. 직접 전달 방식(동기 방식)
  2. 간접 전달 방식(비동기 방식)

실습 - 직접 전달 방식

스크린샷 2022-04-21 오전 1.11.18.png

다음과 같이 스토리보드를 그려주었고, 액션 메소드들을 작성해주었다.

sender 파라미터를 UISwitch, UIStepper로 다운캐스팅 해줘서 관련 메소드나 프로퍼티를 사용할 수 있도록 한다.

이렇게 하지 않으면

guard let ogj = sender as? UISwitch else {
	return
}

if obj.isOn == true {
	...
}

이런식으로 옵셔널 바인딩을 해줘야하기 때문에 불편해진다.

그리고 데이터를 넘겨줄 두번째 화면을 만들어 다음과 같이 만들어준다.

스크린샷 2022-04-21 오전 1.29.07.png

첫번째VC의 버튼에 아래와 같은 함수와 연결해 준다.

@IBAction func onSubmit(_ sender: Any) {
        // 우리가 전달할 데이터들이 UIViewController 이 아닌 ResultViewcontroller에 있으므로 as? 를 통해 캐스팅 해줘야함
        guard let rvc = self.storyboard?.instantiateViewController(withIdentifier: "RVC") as?  ResultViewController else { return }
        
        rvc.paramEamil = email.text!
        rvc.paramUpdate = isUpdate.isOn
        rvc.parmaInterval = interval.value
        
        self.present(rvc, animated: true)
    }

vc2 에 받은데이터를 라벨에 넣어주는 코드를 작성한다

override func viewDidLoad() {
        super.viewDidLoad()

        self.resultEmail.text = paramEamil
        self.resultUpdate.text = (self.paramUpdate == true ? "자동갱신" : "자동갱신안함")
        self.resultInterval.text = "\\(Int(parmaInterval))분 마다 갱신"
    }

viewDidLoad() 메소드에 내용을 작성해두면 화면이 메모리에 모두 로드되고 난 후 시스템에 의하여 이 메소드가 호출되면서 메소드 내에 작성해둔 내용도 함께 실행된다. 로드된 후 한번만 실행되므로, 중복해서 실행되지 않는다.