[학습각서](Swift)는 파생 모드를 사용한 코코아 MVC 기종

8410 단어 Swiftmvcdelegateidea

개시하다


지난번에 NotificationCenter를 사용한 코코아 MVC 모델을 배웠는데 이번에는 delite 도형을 사용한 코코아 MVC 모델을 실시하고자 합니다.

이른바 정계부 도안


간단하게 말하면 어떤 대상이 해야 할 업무(논리)의 일부분을 다른 대상에게 위탁하는 디자인 모델이다.
이렇게 디자인하면 개발자가 이런 대상을 사용할 때 다양한 사용과 제어를 할 수 있어 유니버설성을 높일 수 있다.
출전: https://dev.classmethod.jp/articles/delegate-protocol-writing-and-concepts/#toc-8

코코아 MVC


지난번 기사를 참조할 수 있었으면 좋겠어요.
https://zenn.dev/articles/23dd41ea1a26b7/edit

샘플 코드


행동은 지난번과 같다.

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


https://github.com/MasakatsuTagishi/Practice-Delegate

참고물


1. delegate(delegate)에 대한 철저한 해설!【Swift】


2. #25Swift 제작 표 보기(UItableView)의 사용자 정의 칸/채팅 질문에 대답하기·응용도장 실황 녹음


iOS 응용 설계 모드 시작


https://peaks.cc/books/iOS_architecture

최후


델리멘에 대해서는 학습 초기에는 알 수 없는 부분들이 많았지만, 델리멘 처리에서 어떤 문제를 해결할 수 있을지 주의를 기울여 이해하기 쉬워졌다.
만약 잘못과 인식의 잘못이 있다면 지적해 주십시오.

좋은 웹페이지 즐겨찾기