IOS 프로그래밍

본문 바로가기

사이트 내 전체검색


12. Swift Delegate 사용하기

페이지 정보

작성자 관리자 댓글 0건 조회 3,844회 작성일 20-01-03 22:59

본문

이번에는 화면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()메소드를 추가하였다.


다음과 같이 실행 결과 , 출력창에 메세지를 확인할 수 있다.



1.png

댓글목록

등록된 댓글이 없습니다.



개인정보취급방침 서비스이용약관
Copyright © www.leelab.co.kr All rights reserved.
상단으로
TEL. 063-469-4551 FAX. 063-469-4560
전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과
PC 버전으로 보기