[SWIFT] Delicate est pratique à utiliser lorsque vous souhaitez réutiliser des pièces

J'ai finalement découvert le délégué, j'ai donc rédigé un mémorandum.

Il est pratique à utiliser lorsque vous souhaitez utiliser de petites pièces telles que des boutons, mais que vous souhaitez traiter différemment pour chaque page.

Cette fois, j'utiliserai les boutons ci-dessous. À partir de la gauche, "Bouton Retour", "Bouton Commentaire" et "Bouton Suivant". Je souhaite utiliser cette classe de boutons sur différentes pages.

デリゲート.png

[Chose que vous voulez faire] Je veux changer l'action de pression du bouton pour chaque page. Lorsque vous appuyez sur le bouton retour, une page passe à l'écran précédent et une autre page se termine en mode modal. Ou pour les autres pages, je souhaite enregistrer la page avant de fermer la page. etc

[Solutions] Écrivez l'action de pression sur le bouton sur chaque page La partie conception du bouton peut être partagée, mais la fonction de la partie action est déléguée à chaque page. C'est le rôle du délégué, qui se traduit par «transfert».

[manière]

  1. Écrivez le protocole dans la vue de la partie bouton. Si vous souhaitez utiliser les boutons de la classe footerView, assurez-vous de l'implémenter à l'aide du nom de méthode spécifié.
FooterView.swift
protocol TapLeftButtonVCDelegate {
    func tapLeftButton()
}
protocol TapCenterButtonVCDelegate {
    func tapCenterButton()
}
protocol TapRightButtonVCDelegate {
    func tapRightButton()
}
  1. Sur chaque page, instanciez la classe de bouton et déclarez que vous êtes la destination de l'action de bouton.
ViewController.swift
    //Puisque je veux utiliser uniquement le bouton droit sur cette page, je déclare uniquement le protocole pour le bouton droit.
    @IBOutlet weak var footerView: FooterView!
    override func viewDidLoad() {
        super.viewDidLoad()
        footerView.tapRightButtonVCDelegate = self
    }
  1. Mettez en œuvre l'action après avoir appuyé sur le bouton de chaque page.
extension ViewController: TapRightButtonVCDelegate {
    func tapRightButton() {
        //Passez à l'écran suivant, enregistrez le processus, écrivez ce que vous voulez
    }
}
  1. Enfin, revenez au FooterView du bouton et demandez à traiter la destination du délégué lorsque vous appuyez sur le bouton.
class FooterView: UIView {
    var tapRightButtonVCDelegate: TapRightButtonVCDelegate?

    @IBAction func tapRightButton(_ sender: Any) {
        tapRightButtonVCDelegate?.tapRightButton()
    }
}

Vous pouvez maintenant réutiliser le bouton sur différentes pages.

[Impression] C'était comment utiliser le délégué du point de vue de l'usage. Il peut y avoir d'autres moyens pratiques de l'utiliser.

Recommended Posts

Delicate est pratique à utiliser lorsque vous souhaitez réutiliser des pièces
ProxyFactory est pratique lorsque vous souhaitez tester AOP avec Spring!
Lorsque vous souhaitez utiliser la méthode à l'extérieur
Si vous souhaitez transformer une application Java en une image Docker, il est pratique d'utiliser jib.
Pratique à utiliser lorsque vous souhaitez exécuter différents groupes de traitement en série
Lorsque vous souhaitez lier InputStream dans JDBI3
[RSpec] Lorsque vous souhaitez utiliser la variable d'instance du contrôleur dans le test [attribuer n'est pas recommandé]
[Swift] Utilisez nonzeroBitCount lorsque vous voulez popcnt dans Swift
Qu'utilisez-vous lors de la conversion en String?
[Ruby] Lorsque vous souhaitez remplacer plusieurs caractères
Je souhaite utiliser les fonctions pratiques de Clojure dans Kotlin
Si vous souhaitez utiliser Mockito avec Kotlin, utilisez mockito-kotlin
Lorsque vous souhaitez remplacer dynamiquement l'annotation dans Java 8
JAWJAW est pratique si vous utilisez WordNet à partir de Java
Remarques à vérifier lorsque vous essayez d'utiliser Lombok
Code à utiliser lorsque vous souhaitez traiter Json en Java avec uniquement des bibliothèques standard
Utilisez JLine lorsque vous souhaitez gérer les frappes sur la console caractère par caractère en Java
Lorsque vous souhaitez écrire explicitement OR ou AND avec ransack
Que faire lorsque vous souhaitez connaître la position source où la méthode est définie dans binding.pry
Lorsque vous avez introduit la devise mais que vous souhaitez ajouter plus de colonnes
La fonction est très facile à utiliser
Un mémo lorsque vous souhaitez effacer la partie horaire de l'agenda
Si vous souhaitez utiliser Oracle JDK 11 à partir de septembre (ajoutez Amazon Corretto)
Lorsque vous souhaitez que Rails désactive une session pour un contrôleur spécifique
[JPA] Mémo personnel Le traitement de la pagination est très pratique si vous utilisez Pageable
eclipse Je veux vraiment que vous utilisiez la touche de raccourci transcendantale recommandée (Windows)
Je veux que vous utilisiez Enum # name () pour la clé de SharedPreference
Je souhaite utiliser DBViewer avec Eclipse 2018-12! !!
Commandes de base de Rails que vous souhaitez apprendre
Je veux utiliser @Autowired dans Servlet
[Rails] Enum est plus facile à utiliser! Énumélisez!
Vous pouvez ne pas vouloir utiliser la méthode remove sur ArrayList très souvent
[Java] Pourquoi vous embêtez-vous à utiliser l'interface (Spring est également disponible)
Lorsque vous souhaitez notifier une erreur quelque part lors de l'utilisation de graphql-spring-boot avec Spring Boot
Je veux que vous utilisiez Scala comme meilleur Java pour le moment
[Spring Boot] Si vous utilisez Spring Boot, il était pratique d'utiliser de nombreux utilitaires.