2022. 6. 9. 19:14ㆍiOS
화면 전환 과정에서의 값 전달 방식
-뷰 컨트롤러에 값을 직접 전달 하는 방식(동기 방식)
: 영속적으로 값을 저장할 필요가 없는 화면 전환에서 사용된다.
-공통의 저장소를 만들어 두고 값을 공유 하는 방식(비동기 방식)
:지속적으로 값을 저장할 필요가 있는 화면 전환에서 사용된다. (ex:로그인정보 저장)
뷰 컨트롤러에 직접 값을 전달하기
뷰 컨트롤1 에서 뷰 컨트롤 2로 값을 전달하는 과정
1-VC1에서는 VC2로 전달할 값을 준비합니다.
2-VC2에서는 값을 대입받을 프로퍼티를 정의합니다.
3-VC1에서는 VC2의 인스턴스를 직접 생성하거나, 이미 생성되어 있는
인스턴스의 참조를 읽어 옵니다.
4-VC1에서는 2번에서 정의한 VC2 인스턴스의 프로퍼티에 값을 대입합니다.
5-VC1에서 VC2로 화면을 전환합니다.
@IBAction func onSwich(_ sender: UISwitch) {
if (sender.isOn == true) {
self.isUpdateText.text = "갱신함"
} else {
self.isUpdateText.text = "갱신하지 않음"
}
}
//갱신 주기가 바뀔 때마다 호출되는 메소스
@IBAction func onStepper(_ sender: UIStepper) {
let value = Int(sender.value)
self.intervalText.text = "\(value)분마다"
}
두번째 뷰 컨트롤러를 생성하고 코드 입력하기
세컨트 뷰 컨트롤러 코드 구현
저장소를 사용하여 값을 주고 받기
-AppDelegate 객체를 사용하여 값을 주고 받기
앱델리게이트에 클래스를 추가한다. 변수들은 뷰 컨트롤러에 직접 값을 전달할때 추가 했던 변수들과 동일.
다음 뷰컨트롤러로 이동 하여 값을 가져온다.
//AppDelgate 객체의 인스턴스를 가져온다.
let ad = UIApplication.shared.delegate as? AppDelegate
//값을 저장한다.
ad?.paramEmail = self.email.text
ad?.paramUpdate = self.isUpdate.isOn
ad?.paramInterval = self.interval.value
// 이전 화면으로 복귀한다.
self.presentingViewController?.dismiss(animated: true)
저장소에 클래스를 저장한다.
사용할 뷰 컨트롤러에 객체의 인스턴스들을 가져온다.
값을 저장한다. 이전화면으로 복귀한다. 순서로 작업을 하면 된다.
'iOS' 카테고리의 다른 글
델리게이트 패턴이란? (0) | 2022.06.13 |
---|---|
사용자에게 메시지를 전달하는 방법 (0) | 2022.06.09 |
화면 전환의 종류 (0) | 2022.06.06 |
인터페이스 빌더에 대해서(IB) (0) | 2022.06.06 |
ios앱의 구조와 코코아 터치 프레임워크 (0) | 2022.06.06 |