[SWIFT] Delicate ist praktisch, wenn Sie Teile wiederverwenden möchten

Endlich erfuhr ich von dem Delegierten und machte ein Memorandum.

Dies ist praktisch, wenn Sie kleine Teile wie Schaltflächen verwenden möchten, diese jedoch für jede Seite anders verarbeiten möchten.

Dieses Mal werde ich die Schaltflächen unten verwenden. Von links "Zurück", "Kommentar" und "Weiter". Ich möchte diese Schaltflächenklasse auf verschiedenen Seiten verwenden.

デリゲート.png

[Was du machen willst] Ich möchte die Tastendruckaktion für jede Seite umschalten. Wenn Sie die Zurück-Taste drücken, wechselt eine Seite zum vorherigen Bildschirm und eine andere Seite endet modal. Oder für andere Seiten möchte ich die Seite speichern, bevor ich die Seite schließe. etc

[Lösungen] Schreiben Sie die Aktion zum Drücken der Taste auf jede Seite. Der Designteil der Schaltfläche kann freigegeben werden, die Funktion des Aktionsteils wird jedoch an jede Seite delegiert. Dies ist die Rolle des Delegierten, was übersetzt "Übertragung" bedeutet.

[Weise]

  1. Schreiben Sie das Protokoll in die Ansicht des Schaltflächenteils. Wenn Sie die Schaltflächen der footerView-Klasse verwenden möchten, müssen Sie sie mit einem festen Methodennamen implementieren.
FooterView.swift
protocol TapLeftButtonVCDelegate {
    func tapLeftButton()
}
protocol TapCenterButtonVCDelegate {
    func tapCenterButton()
}
protocol TapRightButtonVCDelegate {
    func tapRightButton()
}
  1. Instanziieren Sie auf jeder Seite die Schaltflächenklasse und erklären Sie, dass Sie das Ziel der Schaltflächenaktion sind.
ViewController.swift
    //Da ich auf dieser Seite nur die rechte Schaltfläche verwenden möchte, deklariere ich nur das Protokoll für die richtige Schaltfläche.
    @IBOutlet weak var footerView: FooterView!
    override func viewDidLoad() {
        super.viewDidLoad()
        footerView.tapRightButtonVCDelegate = self
    }
  1. Führen Sie die Aktion aus, nachdem Sie auf jeder Seite die Schaltfläche gedrückt haben.
extension ViewController: TapRightButtonVCDelegate {
    func tapRightButton() {
        //Fahren Sie mit dem nächsten Bildschirm fort, speichern Sie den Vorgang und schreiben Sie alles, was Sie möchten
    }
}
  1. Kehren Sie schließlich zur Fußzeile der Schaltfläche zurück und weisen Sie an, das Delegatenziel zu verarbeiten, wenn die Schaltfläche gedrückt wird.
class FooterView: UIView {
    var tapRightButtonVCDelegate: TapRightButtonVCDelegate?

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

Jetzt können Sie die Schaltfläche auf verschiedenen Seiten wiederverwenden.

[Eindruck] So wurde der Delegat unter dem Gesichtspunkt der Verwendung verwendet. Es kann andere bequeme Möglichkeiten geben, es zu verwenden.

Recommended Posts

Delicate ist praktisch, wenn Sie Teile wiederverwenden möchten
ProxyFactory ist praktisch, wenn Sie AOP mit Spring testen möchten!
Wenn Sie die Methode außerhalb verwenden möchten
Wenn Sie eine Java-Anwendung in ein Docker-Image verwandeln möchten, ist es praktisch, Jib zu verwenden.
Üben Sie die Verwendung, wenn Sie verschiedene Verarbeitungsgruppen seriell ausführen möchten
Wenn Sie InputStream in JDBI3 binden möchten
[RSpec] Wenn Sie die Instanzvariable des Controllers im Test verwenden möchten [Zuweisungen wird nicht empfohlen]
[Swift] Verwenden Sie nonzeroBitCount, wenn Sie in Swift popcnt möchten
Was verwenden Sie beim Konvertieren in String?
[Ruby] Wenn Sie mehrere Zeichen ersetzen möchten
Ich möchte die praktischen Funktionen von Clojure in Kotlin nutzen
Wenn Sie Mockito mit Kotlin verwenden möchten, verwenden Sie Mockito-Kotlin
Wenn Sie Annotation in Java 8 dynamisch ersetzen möchten
JAWJAW ist praktisch, wenn Sie WordNet aus Java verwenden
Hinweise zur Überprüfung bei der Verwendung von Lombok
Code, der verwendet werden soll, wenn Sie Json nur mit Standardbibliotheken in Java verarbeiten möchten
Verwenden Sie JLine, wenn Sie Tastenanschläge auf der Konsole zeichenweise in Java verarbeiten möchten
Wenn Sie explizit ODER oder UND mit Ransack schreiben möchten
Was tun, wenn Sie die Quellposition wissen möchten, an der die Methode in bind.pry definiert ist?
Wenn Sie devise eingeführt haben, aber weitere Spalten hinzufügen möchten
Die Funktion ist sehr einfach zu bedienen
Ein Memo, wenn Sie den Zeitteil des Kalenders löschen möchten
Wenn Sie Oracle JDK 11 ab September verwenden möchten (fügen Sie Amazon Corretto hinzu)
Wenn Rails eine Sitzung für einen bestimmten Controller deaktivieren soll
[JPA] Persönliche Memo Die Paging-Verarbeitung ist sehr praktisch, wenn Sie Pageable verwenden
Eclipse Ich möchte auf jeden Fall, dass Sie die von Transcendental empfohlene Tastenkombination (Windows) verwenden.
Ich möchte, dass Sie Enum # name () für den Schlüssel von SharedPreference verwenden
Ich möchte DBViewer mit Eclipse 2018-12 verwenden! !!
Grundlegende Rails-Befehle, die Sie lernen möchten
Ich möchte @Autowired in Servlet verwenden
[Rails] Enum ist einfacher zu bedienen! Enumelize!
Möglicherweise möchten Sie die Methode remove in ArrayList nicht sehr oft verwenden
[Java] Warum verwenden Sie die Benutzeroberfläche (Spring ist ebenfalls verfügbar)?
Wenn Sie irgendwo einen Fehler melden möchten, wenn Sie graphql-spring-boot mit Spring Boot verwenden
Ich möchte, dass Sie Scala vorerst als besseres Java verwenden
[Spring Boot] Wenn Sie Spring Boot verwenden, war es praktisch, viele Dienstprogramme zu verwenden.