Today I Learned

Segue를 통한 ViewController 간 데이터 통신 - TIL

jjjkh 2023. 8. 22. 20:32

- storyboard에서 viewcontroller 사이를 화살표로 표현한다.

- segue는 화면 전환을 위해 사용되는 인터페이스 요소이다.

 

- 특징 

  다음 viewcontroller로 데이터를 전달할 수 있다.

  화면전환을 수행하기 전에 원하는 작업을 수행할 수 있다.

 화면전환 시 애니메이션을 적용할 수 있다.

 segue의 destination, source로 구성됨

// 첫 번째 화면
class FirstViewController: UIViewController {
    @IBAction func buttonTapped(_ sender: UIButton) {
        performSegue(withIdentifier: "showDetail", sender: nil)
    }
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "showDetail" {
            if let secondViewController = segue.destination as? SecondViewController {
                secondViewController.data = "Hello, Second View Controller!"
            }
        }
    }
}

// 두 번째 화면
class SecondViewController: UIViewController {
    var data: String?
    @IBOutlet weak var label: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        label.text = data
    }
}

이런 식으로 코드를 작성할 수 있고 스토리 보드에서는 첫번째 페이지에 버튼을 추가하고 두번째 페이지에 label을 추가한다. 그리고 버튼을 컨트롤을 누른 상태로 두번째 페이지의 컨트롤러에 가져가면 세그연결 타입이 나오는데 show를 선택해준다. 그러면 화살표로 두 페이지가 연결되게 되게 되는데 identifier의 이름을 showDetial로 바꾸어준다. 그리고 label을 IBOutlet으로 연결해주고 버트는 액션으로 연결해주고 실행을 시키면 된다.