1. Segue를 이용한 값전달
(VC1: 전달을 하는 ViewController VC2: 전달을 받는 ViewController)
1) 생명주기
- VC1.화면이동 요청 => VC1.prepare => VC1.viewWillDisapear => VC2.viewWillApear => VC2.viewDidApear
=> VC2.view.viewDidDisappear
2) VC2에서 전달받을 인자에 대한 변수 선언
var name2: String?
3) VC1에서 화면이동
self.performSegue(withIdentifier: "toMain", sender: self)
4) VC1에서 값전달
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
print("세그 시작전 작업 prepare")
if segue.identifier == "toMain" {
print("1")
guard let destiationVC = segue.destination as? MainViewController else{
return
}
print("2")
print(type.text!)
destiationVC.name2 = type.text
print(destiationVC.name2!)
print("3")
}
}
5) VC2에서 값을 사용
override func viewDidLoad() {
super.viewDidLoad()
print(name2!)
// Do any additional setup after loading the view.
}
2. 화면 복귀시 값전달
1) V1.데이터 받기
var retName:String?
override func viewDidAppear(_ animated: Bool) {
print(retName)
}
2) V2.데이터 넣어서 화면 복귀하기
@IBAction func goBack(_ sender: Any) {
let preVC = self.presentingViewController
guard let vc = preVC as? ViewController else {
return
}
vc.retName = "return Success"
preVC?.dismiss(animated: true, completion: nil)
}
'앱 개발자 역량 > IOS' 카테고리의 다른 글
Swift ] addSubView 내비게이션 바에 가려지는 오류 (0) | 2019.05.07 |
---|---|
Swift) TableView (0) | 2019.04.03 |
Swift) 이미지선택 이벤트 (0) | 2019.04.03 |
Swift) 간접적인 값 전달 (0) | 2019.04.03 |
Swift) Navigation Controller를 이용한 값전달 (0) | 2019.04.03 |