はじめに

間違いがあるかもしれないです。
間違っていたらコメントください

delegateを使ってViewに通知する方法を学んだので記録しておきます。

実装

ViewController
import UIKit

class ViewController: UIViewController, SampleModelDelegate {

    private let sampleModel = SampleModel()

    override func viewDidLoad() {
        super.viewDidLoad()

        sampleModel.delegate = self
        
        // ここでリクエスト
        sampleModel.fetchAPI()
    }

    func sampleModel(_ sampleModel: SampleModel) {
        print("レスポンスが返ってきました")
    }
}
SampleModel
import Foundation

protocol SampleModelDelegate: AnyObject {
    func sampleModel(_ sampleModel: SampleModel)
}

class SampleModel {
    weak var delegate: SampleModel?

    func fetchAPI() {
        // APIリクエスト...
        // レスポンスが返ってきたら通知
        // ↓ API待ってる代わり
        Thread.sleep(forTimeInterval: 5)

        // ここでView側にあるsampleModelが実行される
        delegate?.sampleModel(self)
    }
}

おわり

どのようにデリゲートが実行されているのか知らなかったので勉強になりました。


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308626288.html

相关文章: