Ich neige dazu, einen Übergang von der View-Controller selbst zu erstellen.
Sie würden dann eine IBAction für die Schaltfläche auf den View-Controller erstellen, und haben die Aktion Anruf [self performSegueWithIdentifier:@"identifier"];
Dies ist mehr oder weniger genau das, was den Übergang von einem Knopf macht zu schaffen. Wenn das alles 100% ist, was Sie tun müssen, ist das vollkommen akzeptabel. Dies ist jedoch eine wartungsfreundlichere Lösung, da Sie auf einfache Weise zusätzliche Funktionen zu Schaltflächen hinzufügen können. D. h., Ihre Schaltfläche erfordert, dass Sie ein Objekt auf einem Server speichern. Sie möchten dieses Objekt speichern, bevor Sie sich von der Seite entfernen, sodass Sie den Aufruf performSegueWithIdentifier
in den Abschlussblock des Speicherns einfügen.
Darüber hinaus können Sie das Segment aus dem Storyboard mit einem Bezeichner erstellen, um dieses Segment für mehrere Schaltflächen zu verwenden. Angenommen, Sie haben einen View-Controller mit 4 Schaltflächen, die alle auf eine Informationsseite für diese Schaltfläche gehen. Sie benötigen nur einen "goToInfo" -Überblick auf Ihrem Storyboard, aber Sie können 4 einzelne IBActions für die Schaltflächen einrichten, die andere Einstellungen vornehmen, und dann den View-Controller basierend auf den in den IBActions für die Schaltflächen erstellten Daten vorbereiten. Dadurch bleibt Ihr Storyboard ein wenig sauberer, denn anstatt 4 verschiedene Segmente zu benötigen, die alle auf dem SB sichtbar sind, haben Sie nur die 1.
tl; dr - das Erstellen des Segments von der Schaltfläche ist in Ordnung solange ist 100% das einzige, was Sie tun müssen, wenn Sie den Knopf drücken. Wenn noch etwas im Hintergrund passieren muss, ist es besser, das Segment vom VC zu erstellen und es über seinen Bezeichner aufzurufen, nachdem Sie die zusätzlichen Schritte ausgeführt haben.
Edit - Ich nehme an, ich habe dich leicht in die Irre geführt. Eine Sache, die Sie tun könnten, ist die Methode -(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
zu überschreiben. Sie richten eine if/else if-Kettenüberprüfung ein, um festzustellen, ob segue.identifier den Zeichenfolgen entspricht, für die Sie den Bezeichner festgelegt haben, und Sie können verschiedene Logik innerhalb dieser Blöcke ausführen, die auch dann aufgerufen werden, wenn Sie das Segment direkt an die Schaltfläche anhängen . Das einzige Problem dabei ist, dass es sich um eine Void-Funktion handelt, und das Segment wird danach ausgeführt, ungeachtet der Probleme, die Sie bei den auf der Seite eingegebenen Daten feststellen können.
Jetzt überschreibe ich normalerweise diese Methode sowieso, so dass ich Daten zwischen VCs weitergeben kann. Hier würden Sie die Eigenschaften von segue.destinationViewController
festlegen, nachdem Sie sie in die ViewController-Klasse umgewandelt haben, die Sie kennen. Ich würde hier keine Heavy-Lifting-Logik setzen, und ganz sicher keine Server-Anrufe.Das sind Fälle, in denen Sie definitiv eine IBAction über die Schaltfläche einrichten möchten, die den Logik-/Serveraufruf ausführt, und performSegue
aufruft, wenn Sie fertig sind und wissen, dass alles ordnungsgemäß funktioniert hat.
Hallo, Sie sollten genauer mit Ihrer Frage sein. Außerdem stellen Sie mehrere Fragen in einem, ist es besser, eine Frage spezifisch zu sein und Details darüber zu geben, damit Leute mit mehr Informationen sind, um Ihnen zu helfen. –
Dank @MagoNicolasPalacios Ich werde versuchen, genauer zu sein – Eduardo