Ich bin neu bei Swift, also entschuldige ich mich für mein mangelndes Wissen über fast alles, was mit Swift zu tun hat.Control vars/IBOutlets von einem ViewController in einem anderen ViewController
Im Moment entwickle ich eine App, die die ARSlidingPanel Bibliothek verwendet, so dass jetzt zwei ViewControllers auf dem Bildschirm vorhanden sind (Hauptansicht mit dem dunklen Hintergrund und Panelansicht, die den grünen Hintergrund darstellt). Ich möchte vars/Call-Funktionen von der Panel-Ansicht in die Hauptansicht einstellen können. Wenn ich zum Beispiel auf eine Schaltfläche in der Bedienfeldansicht klicke, möchte ich einen Text in der Hauptansicht anzeigen. Im Moment habe ich begonnen, statische Vars zu verwenden, aber von meinem Wissen über Java/Android weiß ich, dass dies wahrscheinlich nicht der richtige Weg ist. Irgendwelche Tipps für eine sauberere/akzeptablere Art, Dinge zu tun?
Ich sehe 2 Lösungen, die einfachste ist eine schwache Referenz Ihres VC in Ihrer zweiten VC zu speichern ('schwache var mainVC: myVCClass!' In Ihrer zweiten VC-Klasse), legen Sie es einfach beim Erstellen der zweiten VC oder rufe das Segment an. Eine andere Lösung besteht darin, ein Delegiertenentwurfsmuster zu verwenden, das anspruchsvoller ist. –
Können Sie in diesem Anwendungsfall das Delegierten-Designmuster etwas weiter erklären? – jaytj95
Definieren Sie ein Protokoll wie 'Protokoll MainVCDelegate { \t func myButtontapped (Absender: UIButton) }' und speichern Sie einen Verweis auf die Stellvertretung in Ihrem MainVC 'var-Delegat: MainVCDelegate?' Und rufen Sie es auf, wenn es benötigt wird, wie wenn die Schaltfläche ist getapped 'self.delegate? .myButtontapped (sender)'. Die secondVC sollte sie 'class SecondVC: UIViewController, MainVCDelegate' erben und die View innerhalb der Delegate func Implementationen ändern, vergiss nicht' myMainVC.delegate = mySecondVC' zu setzen wenn du sie erstellst und du solltest gut gehen. –