[학습각서](Swift)는 파생 모드를 사용한 코코아 MVC 기종
개시하다
지난번에 NotificationCenter를 사용한 코코아 MVC 모델을 배웠는데 이번에는 delite 도형을 사용한 코코아 MVC 모델을 실시하고자 합니다.
이른바 정계부 도안
간단하게 말하면 어떤 대상이 해야 할 업무(논리)의 일부분을 다른 대상에게 위탁하는 디자인 모델이다.
이렇게 디자인하면 개발자가 이런 대상을 사용할 때 다양한 사용과 제어를 할 수 있어 유니버설성을 높일 수 있다.
출전: https://dev.classmethod.jp/articles/delegate-protocol-writing-and-concepts/#toc-8
코코아 MVC
지난번 기사를 참조할 수 있었으면 좋겠어요.
샘플 코드
행동은 지난번과 같다.
1. prootcol 정의
텍스트 교환 방법이 있는 프로토콜을 정의합니다.
protocol TextModelDelegate: AnyObject {
func didChangeText()
}
2. 모델 설치
change Text 방법을 호출할 때 notify (알림) 방법을 호출하기 위해 텍스트를 수정합니다.
class TextModel {
weak var delegate: TextModelDelegate?
private(set) var text = "ボタンを押してください"
func changeText() {
text = "ありがとう"
notify()
}
private func notify() {
delegate?.didChangeText()
}
}
3. ViewController 구현
• ViewController가 Text Model Delegate와 일치하도록 합니다.(가독성을 높이기 위해 extention을 통해 일치시킵니다.)
・textModel.설명은 delegate = self로 ViewController의 처리를 설명합니다.
• ViewController의 didChangeText 방법에서 업데이트 레이블의 방법을 Text Model Delegate에 부합하는 방법으로 기록합니다.
class ViewController: UIViewController {
@IBOutlet private weak var label: UILabel!
private let textModel = TextModel()
override func viewDidLoad() {
super.viewDidLoad()
setupLabel()
textModel.delegate = self
}
@IBAction private func pressedButton(_ sender: Any) {
textModel.changeText()
}
private func setupLabel() {
label.text = textModel.text
}
private func updateLabel() {
label.text = textModel.text
}
}
extension ViewController: TextModelDelegate {
func didChangeText() {
updateLabel()
}
}
이렇게 하면 모델의 텍스트를 변경할 때 ViewController에 변경을 알리고 텍스트를 변경하는 처리를 실현한다.GitHub
참고물
1. delegate(delegate)에 대한 철저한 해설!【Swift】
2. #25Swift 제작 표 보기(UItableView)의 사용자 정의 칸/채팅 질문에 대답하기·응용도장 실황 녹음
iOS 응용 설계 모드 시작
최후
델리멘에 대해서는 학습 초기에는 알 수 없는 부분들이 많았지만, 델리멘 처리에서 어떤 문제를 해결할 수 있을지 주의를 기울여 이해하기 쉬워졌다.
만약 잘못과 인식의 잘못이 있다면 지적해 주십시오.
Reference
이 문제에 관하여([학습각서](Swift)는 파생 모드를 사용한 코코아 MVC 기종), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/masakatsu_tagi/articles/5a7ea6ee04d98a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)