2017-07-10 3 views
1

Wie werden zwei Überbrückungsfunktionen ausgeführt?Wie macht man zwei Überleitungsfunktionen?

@IBAction func doneBut(_ sender: UIButton) { 
    print("Done") 
    if pointInput.text!.characters.count < 500 { 
     self.performSegue(withIdentifier: "toResult", sender: self) 
    } 
    else { 
     self.performSegue(withIdentifier: "toWinner", sender: self) 
    } 

} 
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "toResult" { 
     if segue.destination is ResultViewController { 

     } 
    } 
} 
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "toWinner" { 
     if segue.destination is ResultViewController { 

     } 
    } 
} 

Wenn ich eine andere Freilauffunktion haben - ein Fehler ist

'vorbereiten (für: Absender :)' wurde bereits

überschrieben

Antwort

2

Sie haben prepare(for nur einmal außer Kraft zu setzen und die segues von switch unterscheiden auf der identifier ing:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    switch segue.identifier { 
     case "toResult": 
     let destination = segue.destination as! ResultViewController 
     // prepare something 

     case "toWinner": 
     let destination = segue.destination as! ResultViewController 
     // prepare something 

     default: break 
    } 
} 

den Eingang eines Int Wert Verwendung wechseln Diese Version mit Typprüfung:

@IBAction func doneBut(_ sender: UIButton) { 
    print("Done") 
    guard let inputText = pointInput.text, let inputInt = Int(inputText) else { 
      // inform the user about the error if needed 
      return 
    } 
    if inputInt < 500 { 
     self.performSegue(withIdentifier: "toResult", sender: self) 
    } else { 
     self.performSegue(withIdentifier: "toWinner", sender: self) 
    } 
} 
+0

Wenn Benutzer in Eingang 500 und mehr - segue zum VC A, sonst, wenn der Eingang von weniger als 500 - segue zum VC B (Segue für eine Schaltfläche)! Wie kann ich es tun? Bitte helfen Sie – GOODDUDE

+0

Verwenden Sie einfach Ihre "IBAction" in der Frage und "Vorbereitung (für segue" in meiner Antwort. Wenn Sie keine Parameter an die Zielansicht Controller übergeben müssen, können Sie 'prepare (für segue" vollständig. – vadian

+0

ist es richtig << @ IBAction func doneBut (_ sender: UIButton) { drucken ("Fertig") wenn Int (pointInput.text!)! <500 { print ("Ergebnis") self.performSegue (withIdentifier: "toResult", Absender: Selbst-) } wenn Int (pointInput.text)> = 500 { print ("Gewinner") self.performSegue (withIdentifier: "toWinner", Absender: Selbst-) } } >> – GOODDUDE

4

Sie können es nur einmal außer Kraft setzen. Verwenden Sie if Anweisungen, um verschiedene Bezeichner zu finden. Versuche dies.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "toResult" { 
     if segue.destination is ResultViewController { 

     } 
    } else if segue.identifier == "toWinner" { 
     if segue.destination is ResultViewController { 

     } 
    } 
} 
1

Nein, Sie sollten die gleiche Funktion nicht zweimal schreiben. Das ist genau das, was dieser Fehler sagt.

'vorbereiten (für: Absender :)' hat bereits

Die Funktion bereits außer Kraft gesetzt außer Kraft gesetzt wurde.

Versuchen Sie, wie das Schreiben:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "toResult" { 
     if segue.destination is ResultViewController { 

     } 
    else if segue.identifier == "toWinner" { 
     if segue.destination is ResultViewController { 

     } 
     } 
} 
0

Lassen Sie uns versuchen, Ihr Problem von der Fehlermeldung zu verstehen.

Bereitet (für: Absender :) 'wurde bereits

überschreibt

Sie nicht gleiche Methode (mit gleicher defination mehr haben können), dann einmal in derselben Klasse gegen OOP ist.


Angenommen, am Morgen dein Vater sagt, dass „um 8:00 Uhr Sie jeder, wie in die Schule gehen“.
Und nach einiger Zeit kommt deine Mutter und sagt dir, dass "um 8:00 Uhr du zu deinen Tanten nach Hause gehen musst, um ihr zu helfen".

Jetzt werden Sie verwirrt und ein bisschen Wut auch, weil Sie nicht wissen, was Sie um 8:00 Uhr tun werden?
Dies ist, was mit dem Compiler geschieht auch und zeigen Fehler, der mir bitte eine Sache wissen lassen, was zu tun ist, wenn Sie diese Funktion aufrufen „vorbereiten (für: Absender :)“


Sie kennen bereits die Lösungen des Problems also hier nicht posten.
Hier möchte ich nur wissen, dass es leicht ist, unser Problem zu lösen, wenn wir es gut verstehen.
als par meiner Meinung nach vadian hat schöne Lösung für Sie,

Verwandte Themen