2016-05-27 14 views
0

Ich habe den Code, der für alle anderen Tasten funktioniert, aber es funktioniert nicht für eine bestimmte Schaltfläche. Der Code ist:UIAlertController Auto Layout Warnung

@IBAction func Quiz(sender: AnyObject) { 
     NSUserDefaults.standardUserDefaults().setInteger(1, forKey: "QuizLevel") 

     let refreshAlert = UIAlertController(title: "Alert!", message: "Please reset.", preferredStyle: UIAlertControllerStyle.Alert) 

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

     self.presentViewController(refreshAlert, animated: true, completion:nil) 
    } 

Die automatische Layout Warnung, die ich bekommen ist:

2016-05-26 20:01:17.640 Quiz[4250:297386] <UIView: 0x7fca60571a80; frame = (0 0; 375 667); autoresize = W+H; layer = <CALayer: 0x7fca6056d0c0>>'s window is not equal to <UIAlertController: 0x7fca60587620>'s view's window! 

Wie kann ich das korrigieren?

+0

Verwendet Ihre App mehrere Fenster? – matt

+0

Hey, was meinst du mit mehreren Fenstern? – user3294322

Antwort

-3

der aktuelle Alarm-Controller-Befehl wäre im Haupt-Thread, weil die Änderung auf dem Hauptbildschirm ausführen, deshalb zeigt es Ihnen Fehler.

dispatch_async(dispatch_get_main_queue(), { 


    let alertController = UIAlertController(title: "Hey AppCoda", message: "What do you want to do?", preferredStyle: .Alert) 

     let defaultAction = UIAlertAction(title: "OK", style: .Default, handler: nil) 
     alertController.addAction(defaultAction) 

     presentViewController(alertController, animated: true, completion: nil) 
    }) 
+2

Dieser Code wird von einem '@ IBAction' aufgerufen, es ist bereits Hauptthread und der Fehler bezieht sich nicht. – sschale

+0

In swift 2.3, wenn wir den UIAlertController nicht auf Hauptthread geschrieben haben, dass es den Fehler in der Konsole verursacht, generiere Fehler. Bitte halten Sie Ihren UIAlertController im Hauptthread. –

+0

Lesen Sie, was ich geschrieben habe. – sschale