12. Swift Delegate 사용하기
페이지 정보
작성자 관리자 댓글 0건 조회 3,843회 작성일 20-01-03 22:59본문
12. Swift Delegate 사용하기
이번에는 화면1에서 화면2로 전환하고, 다시 화면2에서 화면1로 돌아가면서 데이터를 전달하는 방법을 알아보겠다.
Scene2ViewController.swift 파일에 protocol을 정의한다.
import UIKit
protocol ViewDelegate: class {
func didFinishTask(data: String)
}
class Scene2ViewController: UIViewController {
var msg: String = ""
var delegate : ViewDelegate?
var result: String = ""
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
print("Scene 2 : ",msg)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
goBack()
}
func goBack() {
result = "OK"
delegate?.didFinishTask(data: result)
//dismiss(animated: true, completion: nil)
}
}
goBack() 메소드를 호출하면 결과값을 화면1에 전달하고 화면2를 닫게 된다.
ViewControllor.swift 에 callback 함수를 구현한다.
import UIKit
class ViewController: UIViewController , ViewDelegate {
/* 생략 */
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
/*
if seque.identifier == "segueScene2VC" {
}
*/
if segue.destination is Scene2ViewController {
let vc = segue.destination as! Scene2ViewController
vc.delegate = self
vc.msg = self.msg
}
}
/**
* delegate call
*/
func didFinishTask(data: String) {
print(">>> didFinishTask : ", data)
}
}
구성후에 이벤트를 전달해야 할부분은 호출코드를 작성했습니다.
애플리케이션 실행하기
화면2에서 화면1로 전환할때, 화면2가 닫힐때 실행되는 메소츠에 goBack()메소드를 추가하였다.
다음과 같이 실행 결과 , 출력창에 메세지를 확인할 수 있다.
댓글목록
등록된 댓글이 없습니다.