Switch to next view if...

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Aufgrund der Corona-Krise: Die Veröffentlichung von Stellenangeboten und -gesuchen ist bis 31.3.2023 kostenfrei. Das beinhaltet auch Angebote und Gesuche von und für Freischaffende und Selbstständige.

  • Switch to next view if...

    Hallo,

    ich habe da mal eine Frage zum Thema Login und Weitergabe von Daten inklsuive Wechsel der View.

    Ich habe zwei Dinge: 1) Mein LoginVIew und 2) Mein Http Request zur Abfrage von Username und Password.
    Getrennt von einander funktoniert beides. Mein Button leitet mich auf die nächste Seite weiter. Nun möchte ich
    aber, dass die Weiterleitung nur stattfindet, wenn das Login auch korrekt war.

    Allerdings wird der HTTP Request nur ausgeführt, wenn ,it .resume() gearbeitet wird. Somit Zeitversetzt, was
    dazu führt, dass die WEiterleitung passiwrt, obwohl das Login noch nicht fertig ist. Umschließe ich die Weiterleitung
    mit ein If Statemant, bringt das auch nichts.

    Jetzt meine Frage, wie kann ich die Weiterleitung auf die nächste View mit der Abfrage koppeln?

    Vielen Dank
    lg
    WW
  • Neu

    Servus,

    vielen Dank genau das versuche ich ja, bin leider komplett neu was xcode und Swift angeht und daher total verwirrt.

    Wie müsste das aussehen? Suche verzweifelt Codebeispiele, aber die sind im Grunde ident mit dem was ich habe und das
    funktioniert nun mal nicht.

    Wenn ich den Aufruf der neuen View beim Login mache, kommt eine Meldung von wegen ich sollte das im Main Thread
    machen? hä was soll das?

    DAnke
    lg
  • Neu

    Wie Du schon herausgefunden hast, läuft der HTTP Request asynchron und der Completion Handler wird dann in einem Background Thread ausgeführt.

    Alles was das UI Betrifft, muss jedoch im Main Thread ausgeführt werden.

    Eine Möglichkeit Code im Main Thread auszuführen ist z.B. ein

    Quellcode

    1. DispatchQueue.main.async {
    2. // Hier kommt Dein Code rein, um den View Controller anzuzeigen. ;)
    3. }

    Alternativ könntest Du auch @MainActor verwenden, um z.B. eine Method/Funktion immer im Main Thread ausführen zu lassen. Dies würde dann z.B. so aussehen:

    Quellcode

    1. @MainActor func showNextView() {
    2. // Hier kommt Dein Code rein, um den View Controller anzuzeigen. ;)
    3. }
    Die Methode/Funktion showNextView() kannst Du dann z.B. einfach per self.showNextView() aus einem Background Thread aufrufen und Swift sorgt dafür, dass diese im Main Thread ausgeführt wird.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von MCDan ()