2016-04-21 11 views
2

Ich bin mit einem UIAlertController stecken.Wie wird ein UIAlertController angezeigt und eine Aktion ausgeführt, wenn der Benutzer auf OK klickt?

Ich habe diese Warnung Ansicht:

@IBAction func AddPatientButton(sender: AnyObject) { 
    let alert = UIAlertController(title:"Registro Paciente", message: "Paciente Registrado", preferredStyle: UIAlertControllerStyle.Alert) 

    alert.addAction(UIAlertAction(title:"Ok", style: UIAlertActionStyle.Default, handler: nil)) 

    self.presentViewController(alert, animated: true, completion: nil) 


} 

Und es zeigt mir eine Warnung Ansicht richtig. Aber was ich will ist, dass, wenn der Benutzer die Schaltfläche Ok drückt, diese Taste einen Übergang durchführt und den Benutzer zu einem anderen ViewController sendet.

+2

Sie müssen die 'handler' Parameter auf dem' UIAlertAction' verwenden. – rmaddy

Antwort

3

Dieser Beispielcode tut was Sie wollen.

@IBAction func AddPatientButton(sender: AnyObject) { 

    let alert = UIAlertController(title:"Registro Paciente", message: "Paciente Registrado", preferredStyle: UIAlertControllerStyle.Alert) 

    alert.addAction(UIAlertAction(title:"Ok", style: UIAlertActionStyle.Default, handler: { alertAction in 

    // Code to segue/change VC ! 
    self.performSegueWithIdentifier("segue_name", animated: true) 
    // 

})) 

So stellen Sie sicher, dass ein Übergang zu der Ansicht Controller, den Sie gehen wollen zu schaffen und dass eine Kennung in dem Inspektoren (klicken Sie auf der Segue und den Inspektoren) segue zu geben. Kopieren Sie dann den Bezeichner wo "segue_name" ist.

Lassen Sie es mich in Bilder zeigen:

1) einen neuen VC hinzufügen (es sei denn, Sie haben bereits einen Sie offensichtlich gehen wollen). Dann Strg-Ziehen aus dem gelben Symbol des VC kommen Sie an den VC Sie gehen wollen:

Here it is

2) Wählen Sie Anzeigen oder jede Option, die Sie suchen:

Here it is

3) Wählen Sie die segue (der Pfeil,) erschien, klicken Sie auf die Attribute Inspector (oben rechts), und in der Kennung füllen:

enter image description here

Kopieren Sie dann die Kennung, wo "segue_name" in dem Code ist, den ich Ihnen gab.

+1

Verwerfen Sie den Alert-Controller nicht innerhalb des Alarmaktionshandlers. Die Warnung wird bereits gelöscht. – rmaddy

+0

Korrigiert, danke! Vergessen, es zu entfernen. – Coder1000

+0

Vielen Dank für Ihre Hilfe und Ihre Zeit, sehr detailliert und präzise :) – mijares93

2

Sie müssen der Schaltfläche einen Handler hinzufügen. Du bist fast am Ziel. Fügen Sie dem View-Controller, zu dem Sie wechseln möchten, einen manuellen Übergang hinzu. Stellen Sie sicher, dass Sie diesem Segment einen Bezeichner hinzufügen.

alert.addAction(UIAlertAction(title:"Ok", style: UIAlertActionStyle.Default, handler: { 

     self.performSegueWithIdentifier("my_segue_name", animated: true) 

})) 
+4

Warum der Aufruf von 'disatch_async'? – rmaddy

+0

Ich nahm an, dass ich es brauchte. Sinnvoll, dass es nicht benötigt wird, da es sich um eine direkte Reaktion auf einen Knopfdruck handelt. – ryantxr

2
let alertController = UIAlertController(title: titleAlert, message: msg, preferredStyle: UIAlertControllerStyle.Alert) 
let go = UIAlertAction(title: titleBtn, style: UIAlertActionStyle.Default, handler: { (action: UIAlertAction!) in 
    //Your Action here 
}) 
alertController.addAction(go) 
alertController.addAction(UIAlertAction(title: "CANCEL", style: UIAlertActionStyle.Destructive, handler: nil)) 
self.presentViewController(alertController, animated: true, completion: nil) 
Verwandte Themen