Frage von Drawer01, 25

Swift 3 - Code als Struktur (o.ä) zum abrufen?

Hey Leute, und wieder kommt eine Frage zu Swift (3). Und zwar habe ich einen Button erstellt unter dem sehr viel Code steht, welches er alles beim drücken ausführen soll. Genau diesen Code sollen aber andere Knöpfe oder auch Methoden ausführen, so dass ich den langen code jedesmal wieder drunter schreiben muss. Das wird sehr schnell unübersichtlich. Gibt es denn keine Möglichkeit den gesamten code als eine Methode oder Struktur oder Container oder sowas da stehen zu habe so dass ich unter allen anderen Knöpfen jeweils nur "Führe ... aus" (natürlich als Code) schreiben muss? Vielen Dank schonmal :P

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Babelfish, 16

Du hast die Lösung doch schon selbst genannt: Erstelle eine Methode mit deinem wiederkehrenden Code und rufe dieser im jeweiligen Ereignis einfach nur auf.

Wenn du den Code in verschiedenen Klassen oder Controllern benötigst, erstellst du dir einfach eine Helper-Klasse mit dieser Methode. Die kannst du dann entweder statisch machen oder du instantierst dir ein globales Objekt von der Helper-Klasse und rufst diese Methode dann immer auf.

Du solltest dir wirklich erst mal die Basics von Swift aneignen, angefangen bei Klassen, Methoden und Objekten. Ohne diese Grundlagen kommst du nicht weit!

Kommentar von Drawer01 ,

Die Basics habe ich mir so gut wie angeeignet... und ja die Lösung wurde mir gestern Abend im Bett auch bewusst. Hatte wohl einen Gedankenhänger....

Nur finde ich deinen Lösungsansatz auch irgendwie genial, also die Helferklasse. Nur da wüsste ich nicht wie ich auf diese zugreifen soll.

Kommentar von Babelfish ,

Du kannst in Swift im Allgemeinen immer auf fast alles zugreifen. Im einfachsten Fall erstellst du eine Datei Helper.swift und legst darin mit:

func pressButton() { }

… deine Funktion an. pressButton kannst du dann global aufrufen.

Alternativ machst du in der Helper.swift eine Klasse Helper mit deinen Methoden und ganz am Ende der Datei legst du gleich eine globale Instanz der Klasse an:

open class Helper { }
let myHelper = Helper()

Du kannst dann überall bspw. mit myHelper.pressButton() auf die Methoden zugreifen.

Eine weitere Möglichkeit wäre es, bspw. den ViewController mittels Extension gleich um die entsprechende Methode zu erweitern.

Usw…

PS: Es wäre nett, wenn du ab und zu mal Danke oder Pfeil-nach-oben drücken würdest.

Kommentar von Drawer01 ,

Vielen Dank für deine Antwort... kann ich auch eine Array in dieser Helper Datei erstellen und darauf zugreifen?

Ja das mit dem Daumen hoch mache ich ab und an wie du an der unteren Antwort vllt sehen kannst. außerdem wollte ich dich als hilfsreichste Antwort auswählen, was nur leider erst nach gewisser Zeit geht...

Kommentar von Drawer01 ,

habs :P danke

Expertenantwort
von wolfgang1956, Community-Experte für Apple, 18

Im Prinzip gibt es zwei Möglichkeiten:

  • Diese Codezeilen immer wieder kopieren – das wird irgendwann unübersichtlich.
  • Da die Button-Bedienung immer „gleich“ ist, vor die Codzeilen einen Methodennamen schreiben und die Methode in der Controllerklasse ausführen. Dann wird immer der gleiche Code ausgeführt. Allerdings sollte man ggf. auch an die speziellen Abweichungen denken. Achtung: Ein Ja-Button macht eben nicht exakt dasselbe wie ein Nein-Button. Da muss man ggf. für diese Abweichungen noch ein paar Anpassungen in der Controllerklasse vornehmen.

Keine passende Antwort gefunden?

Fragen Sie die Community