다음과 같이 스토리보드를 그려주었고, 액션 메소드들을 작성해주었다.
sender 파라미터를 UISwitch, UIStepper로 다운캐스팅 해줘서 관련 메소드나 프로퍼티를 사용할 수 있도록 한다.
이렇게 하지 않으면
guard let ogj = sender as? UISwitch else {
return
}
if obj.isOn == true {
...
}
이런식으로 옵셔널 바인딩을 해줘야하기 때문에 불편해진다.
그리고 데이터를 넘겨줄 두번째 화면을 만들어 다음과 같이 만들어준다.
첫번째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() 메소드에 내용을 작성해두면 화면이 메모리에 모두 로드되고 난 후 시스템에 의하여 이 메소드가 호출되면서 메소드 내에 작성해둔 내용도 함께 실행된다. 로드된 후 한번만 실행되므로, 중복해서 실행되지 않는다.