2017-07-27 3 views
0

Ich habe 2 Ansichten: FirstView und SecondView.Wie füge ich If-Anweisung vor dem Abwickeln von Segue hinzu?

In SecondView gibt es ein Textfeld und einen Submit-Button. Wenn Benutzer auf Senden klicken, prüfen Sie, ob das Textfeld leer ist oder nicht, bevor Sie zu FirstView zurückkehren.

Auf Storyboard von SecondView, erstelle ich eine Unwind Segue durch halten Strg und klicken Sie auf die Schaltfläche Senden, ziehen, um dann zu verlassen und tapToBackToFirstView

Auf FirstViewController wählen:

@IBAction func tapToBackToFirstView (segue: UIStoryboardSegue) { 


    } 

Auf SecondViewController:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "backToFirstViewFromSecondView" { 
      let destinationController = segue.destination as! FirstViewController 
      destinationController.resultLabel.text = secondViewTextField.Text 
     } 
    } 

Aus meinem Code, wenn ich auf Senden klicken, geht es immer zu FirstView. Wie kann ich eine IF-Anweisung hinzufügen, um zu überprüfen, ob das Textfeld leer ist oder nicht? Wenn es leer ist, zeigen Sie eine Warnung an und gehen Sie NICHT zu FirstView.

Wenn es nicht leer ist, gehen Sie zu FirstView.

Dank

+0

oh danke! Aha – John

Antwort

1

Auf Ihrem Firstview-Controller haben Sie unwindseguemethod tapToBackToFirstView, die direkt von Button-Aktion verbunden ist ?. Entfernen Sie das nun und verbinden Sie den Abwicklungsbereich nicht mehr über IBAction, ziehen Sie einfach von SecondViewController auf den eigenen Ausgang, so dass Sie einen manuellen Abschnitt erstellen. Gebt dazu segue identifier.

Jetzt Verbindung IBAction normalerweise wie jeder Knopf. Rufen Sie performSegueWithIdentifier in diesem Zustand basierend auf.

@IBAction func tapToBackToFirstView(sender: AnyObject) { 
    if //Add your condition here 
     {performSegueWithIdentifier("segue identifier", sender: self)} 
    else { 
     //Do this 
     } 
} 
Verwandte Themen