ich zwischen sehr verwirren bin „führen segue mit der Kennung“ und „für segue vorbereiten“ ... was diese Funktionen tun und wie sie funktionieren?Unterschied zwischen segue mit der Kennung durchführen und die Vorbereitungen für segue
Antwort
prepareForSegue bereitet Daten vor, die zwischen den View-Controllern übergeben werden sollen, wobei "performSegue with identifier" den Wechsel tatsächlich zulässt.
Von Apple Documentation:
Swift2:
performSegueWithIdentifier(_:sender:)
Swift3:
performSegue(withIdentifier: String, sender: Any?)
Apps Regel brauchen nicht segues programmatisch auszulösen. Wenn benötigt wird, können Sie diese Methode aufrufen, um ein Segment für eine Aktion auszulösen, die nicht in einer Storyboard-Datei ausgedrückt werden kann, z. B. ein Übergang zwischen Szenen in verschiedenen Storyboards.
Normalerweise wird ein Segment durch eine Benutzeraktion ausgelöst, z. B. durch Klicken auf eine Schaltfläche . Konfigurieren Sie in Interface Builder ein Objekt, z. B. ein Steuerelement , das in die Ansichtshierarchie des Ansichtscontrollers eingebettet ist, um das Segment auszulösen.
Swift2:
prepareForSegue(_:sender:)
Swift3:
prepare(for: NSStoryboardSegue, sender: Any?)
Die Standardimplementierung dieser Methode macht nichts; Sie können überschreiben, um relevante Daten an die neue Ansicht Controller oder Fenster Controller übergeben, basierend auf dem Kontext des Abschnitts. Das Segmentobjekt beschreibt den Übergang und enthält Verweise auf beide Controller , die am Übergang beteiligt sind.
Segues können aus mehreren Quellen ausgelöst werden. Verwenden Sie daher die Informationen in den Parametern "segue" und "sender", um zwischen den verschiedenen logischen Pfaden in Ihrer App zu disambiguieren. Wenn der Übergang beispielsweise von einer Tabellenansicht stammt, würde der Absenderparameter die Zelle identifizieren, die der Benutzer angeklickt hat. Sie könnten diese Informationen verwenden, um die Daten für den Zielansicht-Controller festzulegen.
Perform segue, ändert sich tatsächlich der Ansicht, dass 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.
performSegueWithIdentifier wie es heißt, einen Übergang von der aktuellen UIViewController
segue geschalteten UIViewController
prepareForSegue können Sie einige zusätzliche Arbeiten zu tun, vor dem Übergang geschieht
performSegueWithIdentifier
nur die Viewcontroller sagt, was segue Sie‘ d wie segue zu. Sie können Ihre Namen im Interface Builder angeben.
[self performSegueWithIdentifier:@"GoToAnotherViewController" sender:self];
Sie können einen Viewcontroller mit mehreren segues haben oder Sie etwas aus dem aktuellen Viewcontroller der destinationVC haben „muss wissen“, wenn Sie segue, so you'd use prepareForSegue.
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Make sure your segue name in storyboard is the same as this line
if ([[segue identifier] isEqualToString:@"GoToAnotherViewController"])
{
// Get reference to the destination view controller
YourViewController *vc = [segue destinationViewController];
// Pass any objects to the view controller here, like...
[vc setMyObjectHere:object];
}
}
Swift 3 Syntax ist: performSegue(withIdentifier: String, sender: Any?)
. Sie können dies tun, wenn Sie nur die Viewcontroller ohne pre bringen wollen - Konfiguration oder conditons
Sie können auch prepare(for: NSStoryboardSegue, sender: Any?)
tun, die zusätzliche Features gibt:
- Passing zusätzliche Daten zum ViewController
- machen eine if else-Anweisung, so dass basierend zwischen z Anmeldebildschirm vorbei oder registrieren Bildschirm
im Grunde: prepareForSegue bereitet Daten zwischen View-Controller geleitet, wo als performSegue tatsächlich ermöglicht es der Schalter passieren
Es gibt einen Unterschied, dass ich nicht in den Antworten gesehen haben hier und kann helfen, zu klären.
Die performSegueWithIdentifier ermöglicht Ihren Code während der prepareForSegue dem Benutzer erlaubt, muss eine Benutzeraktion.
Angenommen, 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 die prepareForSegue aufgerufen. Der Benutzer ist hier verantwortlich.
Auf der anderen Seite, wenn der Benutzer nichts klicken, aber die 30 Sekunden ablaufen, dann sollte Ihr CODE 'den Abschnitt' automatisch ausführen.
Das ist, wenn Sie die performSegueWithIdentifier benötigen, um den Job programmatisch zu erledigen. Ihr Code ist hier direkt verantwortlich.
Ich hoffe, es hilft.
Ich habe ein TextField in "SecondViewController (YourViewController)" und ich möchte Rahmen und Platzhalter Text ändern. Wie kann ich es tun? jede Hilfe bitte. –