2016-04-19 2 views
-6

Ich möchte ein Segment erstellen, um Daten an einen anderen View-Controller zu übergeben, aber es gibt bestimmte Kriterien, die passieren müssen. Wenn es mir möglich ist, würde ich lieber die "segue" ID anstelle der "drag" -Methode verwenden.Wie kann ich ein Segment erstellen, das Daten nur dann an einen anderen View-Controller weiterleitet, wenn bestimmte Kriterien erfüllt sind?

dies ist ein Beispiel Im

@IBAction func SubmitButtonPressed(sender: AnyObject) { 

    if 1<0 { 
     // dont perform segue 
    }else{ 
     //Perform segue 

     // i want to pass this data in the next VC 
     var data = "foo" 

     //this is my segue id i want o use to go to the Second VC 
     var segueId = "segueForgotPasswordTwo" 

     // second VC 
     var secondVc = "viewController2" 


     // Iwant to to use prepare for segue but im getting errors in the parameters 
     prepareForSegue(UIStoryboardSegue, sender: AnyObject?){ 


     } 

    } 
} 
+0

Das ist viel zu weit - Ihr Code-Sample verwirrt mich nur noch mehr. Welche Überfahrt-ID, welche "Schleppmethode"? Im Allgemeinen geben Sie einfach einige Daten innerhalb der 'prepareForSegue'-Methode weiter. Dort können Sie die bedingte Logik setzen. – luk2302

+0

Ich möchte ein Formular erstellen, bevor der View Controller1 zum nächsten View Controller2 wechseln kann, um das Formular zu überprüfen. Wenn das Formular leer ist, möchte ich auf View Controller1 bleiben, wenn es nicht leer ist, ich möchte zum nächsten View Controller wechseln. Ich hoffe, das konnte helfen –

+4

Was hält dich davon ab, genau das zu tun? Haken Sie Ihre Formular-Senden-Button-Aktion an einen IBAction-Code an, führen Sie eine Überprüfung durch und wenn die Eingabe gültig ist, lösen Sie das Segment aus. – luk2302

Antwort

2

Ihre Frage ist ein wenig unklar, aber ich glaube, das ist das, was Sie suchen ...

func someFunction(){ 

     if //some condition { 
     //code 

     }else if //some condition { 
     //code 

     } else { 
     //perform segue by using the folowing line. Assign the identifier to the segue in the storyboard. 
      //Do this by first creating a segue by dragging from a view controller to the destination view controller. Be sure to drag from the VIEWCONTROLLER, to the destination VIEWCONTROLLER. DO NOT just drag from the button. Next, choose the type of segue (eg. show or present modally), and then type in an indentifier for this segue. 
     performSegueWithIdentifier("SegueIdentifier", sender: nil) 
    } 



    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "SegueIdentifier" { 

      //now find your view controller that you are seguing to. 
      let controller = segue.destinationViewController as! SomeViewController 

      //access the properties of your viewController and set them as desired. this is how you will pass data along 
      controller.property = someValue 

     } 
    } 
1

Übersicht zu erreichen versuchen:

  1. Haken Sie den Übergang vom Quellenansicht-Controller zum Zielansicht-Controller an (siehe linke rote Pfeile)
  2. Sie es nicht aus der Taste zum Ziel View-Controller
  3. erstellen für die Schaltfläche eine Aktion Haken Ihre benutzerdefinierten Bedingungsprüfung führen Sie dann segue

Screenshot zu tun:

enter image description here

Code:

var data = "foo" 

    @IBAction func buttonPressed(sender: UIButton) { 

     let someCondition = true 

     if someCondition { 
      performSegueWithIdentifier("showGreen", sender: self) 
     } 
     else { 
      performSegueWithIdentifier("showPink", sender: self) 
     } 
    } 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "showGreen" { 

      let greenVC = segue.destinationViewController as! GreenViewController 
      // Make sure the data variable exists in GreenViewController 
      greenVC.data = data 

     } 
    } 
1

Sie können die shouldPerformSegueWithIdentifier implementieren Funktion in Ihrem ViewController. Wenn das Segment ausgelöst wird, kann diese Funktion das Segment abbrechen, wenn es false zurückgibt, so dass Sie einfach die Logik einfügen können, die in dieser Funktion erforderlich ist, und wahr/falsch zurückgeben.

Verwandte Themen