2017-02-09 1 views
0

Beim Klicken muss ich zwei Aktionen ausführen. Die Nachricht anzeigen und dann zu einer anderen Benutzerschnittstelle wechseln. Aber hier nur die Aufgabe 1 ausgeführt wird, aber nicht Aufgabe 2.Warum nach dem Klicken tut es Aufgabe 2 nicht?

@IBAction func sendMessage(_ sender: AnyObject) { 

    // TASK 1 - OK  
    let alert = UIAlertController(title: "Task 1", message: "Test message.", preferredStyle: UIAlertControllerStyle.alert) 
    alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))  
    self.present(alert, animated: true) 

    // TASK 2 - FAIL (does not execute) 
    let x = XyzViewController() 
    x.body = "test"; 
    self.present(x, animated: false, completion: nil) 
} 
+0

Schauen Sie in der Konsole. Es sollte eine Fehlermeldung sein, die Ihnen das Problem mitteilt. – rmaddy

+0

Und Ihr Task 2-Code wird ausgeführt. Verwenden Sie den Debugger zur Bestätigung. – rmaddy

Antwort

2

rufen Sie Ihre Aufgabe in innerhalb der Aktion, folgern die UIAlertController ist ein Viewcontroller ist es bereits vorgestellt, wenn Sie die gleiche Ansicht präsentieren wollen in zusätzlich , Sie müssen zuerst die aktuelle VC entlassen, aber hier ist keine gute Praxis zu tun.

// TASK 1 - OK  
let alert = UIAlertController(title: "Task 1", 
           message: "Test message.", 
           preferredStyle: UIAlertControllerStyle.alert) 
alert.addAction(UIAlertAction(title: "OK", style: .default) { action in 
    // perhaps use action.title here 
    let x = XyzViewController() 
    x.body = "test"; 
    self.present(x, animated: false, completion: nil) 
}) 

self.present(alert, animated: true) 
Verwandte Themen