Ich nehme an, dass Sie dieses Code-Snippet aus der applicationDidFinishLunchingWithOptions aufrufen:. Ich habe es ausprobiert, weil ich es musste. Die Sache ist: Was Sie zu tun versuchen, ist korrekt, aber der ViewController, den das AppDelegate erstellt und präsentiert, wird auf dem Bildschirm angezeigt und davor versucht das Code-Snippet, eine alertView zu erstellen und über die nicht existierende View of einzufügen der RootViewController.
Was ich tun würde, ist es zu einem anderen Delegat Anruf zu verschieben, die garantiert nach der RootViewController aufgerufen wird aufgerufen wird.
func applicationDidBecomeActive(application: UIApplication) {
//This method is called when the rootViewController is set and the view.
// And the View controller is ready to get touches or events.
var alert = UIAlertController(title: "Alert", message: "Cannot connect to :", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.Default, handler: nil))
self.window?.rootViewController?.presentViewController(alert, animated: true, completion: nil)
}
Aber wie immer die Verantwortung des AppDelegate. Es behandelt den Anwendungslebenszyklus und anwendungsweite Delegiertenaufrufe und -ereignisse. Wenn es sinnvoll ist, hier Code zu machen, dann mach es. Aber wenn Sie besser den Code auf den rootViewController oder andere Teile setzen, dann denken Sie darüber nach.
Wie auch immer, ich hoffe, es hilft. Prost!
Im 'AppDelegate' für Swift aktualisiert, wie der Fehler beschreibt, wird das Fenster Hierarchie noch nicht erstellt, so von dort vorhanden man kann nichts (an Am wenigsten von der 'didFinishedLaunchingWithOptions'), so sollten Sie Ihren Code zu einem' ViewController' bewegen –
@ DánielNagy ich sehe, aber ich muss es von AppDelegate zeigen. Gibt es keine Lösungen? –
mögliches Duplikat von [dessen Ansicht nicht in der Fensterhierarchie ist] (http://stackoverflow.com/questions/11862883/whre-view-is-not-in-the-window-hierarchy) –