Develop/IOS

IOS Xcode Swift Delegate 사용하기

dlsdnd345 2016. 3. 23. 20:00

IOS Xcode Swift Delegate 사용하기


IOS 앱을 개발 하다보면 간혹 Delegate 를 사용할때가 있습니다.

Swift는 어떻게 사용하는지 확인해보고 정리해보려고 포스트를 작성합니다.

objectC 에서 사용하던것과 비슷한 형태 인것 같습니다.



1. delegate 를 사용할 Class 에서 protocol 을 정의 하고 호출 합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
import UIKit
 
protocol ViewDelegate: class {
    func didFinishTask()
}
 
class CallDelegate: NSObject {
 
    weak var delegate : ViewDelegate?
    
    /**
     * ViewDelegate call
     */
    func call() {
        delegate?.didFinishTask()
    }
    
}
 
cs


상단의 protocol 을 정의 했습니다. 정의하고 호출할 callback 함수를 구성합니다.

구성후에 이벤트를 전달해야 할부분은 호출코드를 작성했습니다.



2. delegate 의 이벤트를 받기 위한 Class 에서 Delegate 를 상속, 등록 , 이벤트 수신


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
import UIKit
 
class ViewController: UIViewController , ViewDelegate {
 
    override func viewDidLoad() {
        super.viewDidLoad()
 
        initData();
    }
    
    
    /**
     * 데이터 초기화
     */
    func initData() {
        
        let callDelegate = CallDelegate()
        callDelegate.delegate = self
        callDelegate.call()
    }
    
    
    /**
     * delegate call
     */
    func didFinishTask() {
        print(">>> didFinishTask")
    }
 
}
 
cs


delegate 를 상속 , 상속을 하면 함수를 구성하라고 에러가 나타납니다.

아래에 didFinishTask 함수를 구성하였고 , Delegate를 호출하기 위해서

Class 생성을 하고 Delegate 호출부분이 있는 함수를 호출했습니다.

위와같이 하면 didFinishTask 에 이벤트가 들어오는것을 확인 할수 있습니다.




git 활동이 없어서 이제 간단한 샘플이라도 git에 업로드 해보려 합니다. 

Git IOS Delegate Sample