Unterschied zwischen segue mit identifier ausführen und für segue vorbereiten

8

Ich bin sehr verwirrt zwischen " segue mit identifier " und " prepare for segue " ... was diese Funktionen machen und wie sie funktionieren?

    
Uzair 07.08.2015, 12:04
quelle

6 Antworten

5

prepareForSegue bereitet Daten vor, die zwischen den View-Controllern übergeben werden, wobei "performSegue with identifier" den Wechsel tatsächlich zulässt.

Von der Apple-Dokumentation :

  • Swift2: performSegueWithIdentifier(_:sender:)
  • Swift3: performSegue(withIdentifier: String, sender: Any?)

      

    Apps müssen in der Regel keine programmgesteuerten Übermittlungen durchführen. Ob   benötigt, können Sie diese Methode aufrufen, um einen Übergang für eine Aktion auszulösen   kann nicht in einer Storyboard-Datei ausgedrückt werden, z. B. ein Übergang zwischen   Szenen in verschiedenen Storyboards.

         

    Normalerweise wird ein Segment durch eine Benutzeraktion ausgelöst, z. B. durch Klicken auf a   Taste. Konfigurieren Sie in Interface Builder ein Objekt, z. B. ein Steuerelement   eingebettet in die Ansichtshierarchie des View-Controllers, um das   Überleitung.

  • Swift2: prepareForSegue(_:sender:)

  • Swift3: prepare(for: NSStoryboardSegue, sender: Any?)

      

    Die Standardimplementierung dieser Methode macht nichts; Sie können   Überschreiben Sie es, um relevante Daten an den neuen Ansichtscontroller oder das Fenster zu übergeben   Controller, basierend auf dem Kontext des Abschnitts. Das Überleitungsobjekt   beschreibt den Übergang und enthält Verweise auf beide Controller   beteiligt in der Überleitung.

         

    Segues können aus mehreren Quellen ausgelöst werden, also verwenden Sie die Informationen   in den Segue- und Sender-Parametern, um zwischen verschiedenen zu unterscheiden   logische Pfade in Ihrer App Zum Beispiel, wenn der Übergang von a stammt   In der Tabellenansicht würde der Absenderparameter die Zelle identifizieren, die der Benutzer verwendet   geklickt. Sie könnten diese Informationen verwenden, um die Daten auf dem Server festzulegen   Zielansicht-Controller.

Dharmesh Kheni 07.08.2015 12:10
quelle
3

performSegueWithIdentifier teilt dem viewController einfach mit, zu welchem ​​Segment Sie wechseln möchten. Sie können Ihre Namen im Interface Builder angeben.

%Vor%

Sie haben möglicherweise einen ViewController mit mehreren Segmenten oder Sie haben möglicherweise etwas vom aktuellen ViewController, das das Ziel-VK beim Durchsuchen benötigt, also Sie würden prepareForSegue verwenden .

%Vor%     
Adrian 07.08.2015 12:14
quelle
1

Es gibt einen Unterschied, den ich in den Antworten hier nicht gesehen habe und der zur Klärung beitragen kann.

Der performSegueWithIdentifier unterstützt Ihren Code, während prepareForSegue den Benutzer befähigt, eine Benutzeraktion zu erfordern.

Nehmen wir an, Sie haben ein Quiz mit einigen Fragen und der Benutzer hat 30 Sekunden Zeit, um auf jeden von ihnen zu antworten.

Wenn der Benutzer auf eine der Antworten klickt, wird prepareForSegue aufgerufen. Der Benutzer ist hier verantwortlich.

Wenn andererseits der Benutzer nichts anderes anklickt als die 30 Sekunden ablaufen, sollte IHR CODE 'den Übergang automatisch ausführen' .

In diesem Fall benötigen Sie den performSegueWithIdentifier , um den Job programmatisch auszuführen. Ihr Code ist hier direkt verantwortlich.

Ich hoffe, es hilft.

    
sylvia 26.01.2017 18:36
quelle
0

Überleitung durchführen, ändert tatsächlich die Ansicht, die der Benutzer sieht. Die perform-segue-Funktion ruft die Vorbereitungs-Überleitungsfunktion auf, bevor sie die Ansicht ändert; Daher werden Entwickler im Allgemeinen Informationen an den nächsten Controller in dieser Funktion weiterleiten, bevor sie durchgehen.

    
slowlydeveloping 07.08.2015 12:11
quelle
0

performSegueWithIdentifier wie es heißt, macht einen Übergang von Ihrem aktuellen UIViewController zu segue-connected UIViewController

prepareForSegue lassen Sie einige zusätzliche Arbeiten vor dem Übergang geschieht

    
Nerkyator 07.08.2015 12:13
quelle
0

Die Swift 3-Syntax lautet: performSegue(withIdentifier: String, sender: Any?) . Sie können dies tun, wenn Sie den viewController ohne pre - Konfiguration oder Bedingungen

erstellen möchten

Sie können auch prepare(for: NSStoryboardSegue, sender: Any?) ausführen, was zusätzliche Features ergibt:

  • Übergeben von zusätzlichen Daten an den viewController
  • macht eine if else-Anweisung, so dass basierend auf z. Anmeldebildschirm übergeben oder Bildschirm registrieren

im Grunde genommen: prepareForSegue bereitet Daten vor, die zwischen den View-Controllern übergeben werden, wobei die Funktion performSegue den Wechsel tatsächlich zulässt

    
Honey 18.09.2016 12:53
quelle

Tags und Links