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)

    }

+ Recent posts