Notice
Recent Posts
Recent Comments
Link
투케이2K
42. (TWOK/ALGORITHM) [Ios] 패턴 - 딜리게이트 (delegate) 패턴 사용해 대리자, 위임자 확장 기능 처리 실시 본문
투케이2K 알고리즘
42. (TWOK/ALGORITHM) [Ios] 패턴 - 딜리게이트 (delegate) 패턴 사용해 대리자, 위임자 확장 기능 처리 실시
투케이2K 2022. 7. 14. 12:40[환경 설정 및 설명]
언 어 : Ios
설 명 : 패턴 - 딜리게이트 (delegate) 패턴 사용해 대리자, 위임자 확장 기능 처리 실시
[ProtocolUtil 클래스]
import UIKit
// [protocol 정의 실시 : 클래스 외부에 선언]
protocol SendData {
// [인풋 파라미터 : 뷰 컨트롤러 , String 데이터]
func sendValue(_vc: UIViewController, _value : String)
}
[MainController 클래스]
import UIKit
class MainController: UIViewController {
// [뷰 컨트롤러 메모리 로드 수행 실시]
override func viewDidLoad() {
super.viewDidLoad()
print("")
print("==============================")
print("[MainController > viewDidLoad : 뷰 컨트롤러 메모리 로드 수행 실시]")
print("==============================")
print("")
}
// [뷰 컨트롤러 화면에 표시됨]
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("")
print("===============================")
print("[MainController > viewDidAppear() : 뷰 컨트롤러 화면 표시 수행 실시]")
print("===============================")
print("")
}
// [메인 >> 서브 인텐트 이동 클릭 이벤트 지정]
@IBAction func subIntentAction(_ sender: Any) {
print("")
print("===============================")
print("[MainController > subIntentAction() : 메인 > 서브 인텐트 이동 클릭 이벤트 발생]")
print("===============================")
print("")
// [인텐트 화면 지정]
guard let SubVC = self.storyboard?.instantiateViewController(identifier:"SubVC") as? SubController
else {
return
}
// [서브 뷰 컨트롤러에서 전달 받은 데이터를 받기 위해 딜리게이트 지정]
// [서브] 뷰 컨트롤러에서 전달해준 데이터를 받기 위한 경로 : [메인] 쪽에서 extension 정의 후 데이터 받아서 처리 실시
SubVC.delegate = self
SubVC.modalPresentationStyle = .fullScreen // [전체 화면]
self.present(SubVC, animated: false, completion: nil) // [화면 전환]
}
} // [클래스 종료]
// [extension 확장 기능 정의 실시 : 딜리게이트 전달 받은 데이터 처리 부분]
extension MainController: SendData {
// [프로토콜에 정의된 메소드 몸체 구현 실시 >> [서브] 뷰컨트롤러에서 전달 받은 데이터 사용]
func sendValue(_vc: UIViewController, _value: String) {
print("")
print("===============================")
print("[MainController > extension : SendData : sendValue : 딜리게이트 전달 받은 메시지 확인]")
print("[데이터 : \(_value)]")
print("===============================")
print("")
}
}
[SubController 클래스]
import UIKit
class SubController: UIViewController {
// [프로토콜 : SendData 변수 선언]
var delegate : SendData?
// [뷰 컨트롤러 메모리 로드 수행 실시]
override func viewDidLoad() {
super.viewDidLoad()
print("")
print("==============================")
print("[SubController > viewDidLoad : 뷰 컨트롤러 메모리 로드 수행 실시]")
print("==============================")
print("")
}
// [서브 >> 메인 인텐트 이동 클릭 이벤트 지정]
@IBAction func mainIntentAction(_ sender: Any) {
print("")
print("===============================")
print("[SubController > mainIntentAction() : 서브 > 메인 인텐트 이동 클릭 이벤트 발생]")
print("===============================")
print("")
// [딜리게이트로 데이터 전달 수행 실시]
// [파라미터 : _vc (뷰 컨트롤러) / _value (문자열 데이터)]
delegate?.sendValue(_vc:self, _value: "subEnd")
// [dismission 현재 뷰 컨트롤러 닫기 수행 실시]
self.dismiss(animated: false, completion: nil)
}
} // [클래스 종료]
[참고 사이트]
반응형
'투케이2K 알고리즘' 카테고리의 다른 글
Comments