Trulyawesome

Swift Delegate Data Pass (VC간의 데이터 전달) 본문

프로그래밍/iOS

Swift Delegate Data Pass (VC간의 데이터 전달)

ethkelitt 2020. 7. 31. 12:54

들어가기전에

오늘은 Delegate를 이용해서 Data 전달을 구현해보겠습니다. 개발을 하면서 화면을 dismiss할때 데이터전달을 하기위해 공부하다가 알게되었습니다. 공부는 zeddios님의 블로그 https://zeddios.tistory.com/310를 참고해서 공부하였습니다. 

Delegate Protocol Code

1
2
3
protocol SendDataDelegate {
    func sendData(data: String)
}
cs

프로토콜은 메소드를 구현할때 정의를 합니다 자바의 interface와 같습니다. 프로토콜을 선언하여 데이터를 보내줄 메소드를 만들어줍시다 ^ㅡ^

Data Pass Action

1
2
3
4
5
6
@IBAction func btnClicked(_ sender: Any) {
        if let data = tf.text {
            delegate?.sendData(data: data)
            dismiss(animated: true, completion: nil)
        }
    }
cs

그 후 저는 Action함수 안에 데이터를 보내는 함수를 적었습니다.

class에 Delegate 채택

1
class ViewController: UIViewController, SendDataDelegate
cs

만들어둔 Delegate 프로토콜을 채택해줍니다. 설명을 위해 저렇게 적었지만 원래는 extension으로 따로 빼주어서 작업하는게 좋습니다.💪

1
2
3
  func sendData(data: String) {
        exLabel.text = data
    }
cs

 

그 후 채택한 SendData()함수를 구현해줍니다. 받은 데이터를 어떻게 적용하는지에 대한 코드를 적는곳입니다.

prepare()

1
2
3
4
5
6
 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
           if segue.identifier == "show" {
               let vc: DataPassViewController = segue.destination as! DataPassViewController
               vc.delegate = self
           }
       }
cs

그 후 prepare함수로 delegate를 위임해줍시다! 이렇게 구현하시면 delegate를 이용해서 데이터를 보내는 방법은 끝이났습니다. 이것을 잘 이용해서 앞으로 개발에서 잘 써먹을 수 있을듯합니다😀

다음에는 이것을 좀 더 programmatically하게 구현하는 방법을 공부해서 포스팅 하겠습니다.🔥