prepare안에 segue.destination as! ViewController 라는 형태로 데이터를 전달할 수 있는데
이런식으로 전달하면, 뷰컨트롤러끼리 상관관계때문에 데이터가 꼬일? 수 있다고 합니다.
또한, 양방향으로 데이터를 주고 받는 것이 되지 않구요
그래서 Delegate를 통해서 데이터를 전달하는데
아래의 예제를 볼게요
일단 이렇게 두개의 뷰를 만들어주고
두개의 뷰를 이어주고 뷰를 잇는 indentifier를 정의합니다.
그다음 두번째 뷰컨트롤러에
델리게이트를 정의하고
protocol sendBackDelegate { func dataReceived(data: String) }
return button을 눌렀을 때 데이터를 넘겨주는 작업을 정의해줍니다.
@IBAction func returnWithText(_ sender: Any) {
delegate?.dataReceived(data: textField.text!) dismiss(animated: true, completion: nil)
}
이 부분입니다.
그다음 처음 뷰컨트롤러에
class 부분에 sendBackDelegate를 입력하고
prepare부분에서 delegate = self로 할당해주고
데이터를 받아오는 부분은 func dataReceived 에서 처리하면 됩니다.
여기까지입니다.
'개발 > IOS(Swift)' 카테고리의 다른 글
Firebase Auth (0) | 2019.06.24 |
---|---|
IOS Firebase 기본 세팅 (0) | 2019.06.24 |
화면이동 Segue (0) | 2019.06.22 |
Positioning UI Elements Programmatically (0) | 2019.06.19 |
App Delegate (0) | 2019.06.17 |