Cet article est une suite du ** [Swift5] View Controller Comment communiquer et transmettre des valeurs ** que j'ai publié la dernière fois. Si vous ne l'avez pas encore vu, je pense qu'il vaut mieux voir d'abord ici ▼. https://qiita.com/nkekisasa222/items/dabe806c23d3890a009f
Entrons dans le sujet principal!
Tout d'abord, écrivez le code.
SampleModel.swift
//① Créez un protocole ici
protocol DoneCatchProtocol {
    
    //(2) Spécifiez la valeur et le type que vous souhaitez renvoyer au contrôleur (chaîne cette fois)
    func catchSampleData(sampleValueA: String, sampleValueB: String, sampleValueC: String)
}
class SampleModel {
    var sampleValueA: String?
    var sampleValueB: String?
    var sampleValueC: String?
    //③ Créez une instance du protocole
    var doneCatchProtocol: DoneCatchProtocol?
    init(firstSampleValue: String, secondSampleValue: String, thirdSampleValue: String) {
        sampleValueA = firstSampleValue
        sampleValueB = secondSampleValue
        sampleValueC = thirdSampleValue
    }
    //④ Créez une méthode car le traitement est effectué dans Model
    func processingSampleModel {
    
        //⑤ Appelez le protocole créé ici et entrez la valeur
        self.doneCatchProtocol?.catchSampleData(sampleValueA: sampleValueA, sampleValueB: sampleValueB, sampleValueC: sampleValueC)
    }
Je vais résumer le flux.
(1) Créez un protocole côté modèle.
(2) Spécifiez la valeur clé et le type de valeur que vous souhaitez renvoyer.
③ Créez une instance du protocole.
④ Créez une méthode car le traitement est effectué dans Model
(5) Appelez le protocole et spécifiez la valeur que vous souhaitez appeler dans Controller.
Tout d'abord, écrivez le code.
SampleViewController.swift
//(1) Appelez le contrôleur afin qu'il puisse gérer le protocole.
class SampleViewController: UIViewController, DoneCatchProtocol {
    firstSampleValue  = "firstSampleValue"
    secondSampleValue = "secondSampleValue"
    thirdSampleValue  = "thirdSampleValue"
    //(4) Propriété de substitution de la valeur renvoyée par SampleModel
    var valueA: String?
    var valueB: String?
    var valueC: String?
    override func viewDidLoad() {
        super.viewDidLoad()
        startSampleModel()
    }
    func startSampleModel() {
      let sampleModel = SampleModel(firstSampleValue: firstSampleValue, secondSampleValue: secondSampleValue, thirdSampleValue: thirdSampleValue)
      //(3) Confiez-vous au protocole SampleModel et aux méthodes d'appel
      sampleModel.doneCatchProtocol = self
      sampleModel.processingSampleMode()
    }
    //(2) Il est généré automatiquement lorsque le protocole est appelé côté contrôleur.
    func catchSampleData(sampleValueA: String, sampleValueB: String, sampleValueC: String) {
        //⑤ Remplacez la valeur renvoyée par SampleModel
        valueA = sampleValueA
        valueB = sampleValueB
        valueC = sampleValueC
    }
}
Je vais résumer le flux.
(1) Appelez le contrôleur afin qu'il puisse gérer le protocole.
② Lorsque vous appelez le protocole dans ①, la méthode est automatiquement générée.
(3) Confiez-vous au protocole SampleModel et aux méthodes d'appel
④ Préparez une propriété pour remplacer la valeur renvoyée par SampleModel
⑤ Remplacez la valeur renvoyée par SampleModel
Vous pouvez maintenant utiliser la valeur traitée par Model dans Controller.
Dans l'article précédent et cet article, j'ai publié des articles sur la façon de communiquer d'un contrôleur à un modèle, de renvoyer le contenu traité par le modèle au contrôleur et de le gérer avec Controller. N'est-ce pas une méthode de développement souvent gérée dans le modèle MVC? Je pense que vous pouvez vous y référer par tous les moyens.
Merci d'avoir regardé jusqu'à la fin!
Recommended Posts