iOS. Versuch UIAlertController auf UIViewController dessen Blick ist nicht in die Fenster-Hierarchie

Swift 3, Xcode 8.1. Ich möchte die Anzeige UIAlertController im UIViewController.

Habe ich Methoden:

private static func rootViewController() -> UIViewController {
    //cheating, I know

    return UIApplication.shared.keyWindow!.rootViewController!
}

static func presentAlert(_ message: String) {
    let alertView = UIAlertController(title: "RxExample", message: message, preferredStyle: .alert)
    alertView.addAction(UIAlertAction(title: "OK", style: .cancel) { _ in })

    rootViewController().present(alertView, animated: true, completion: nil)
}

Vollständigen code dieser Klasse finden Sie hier

Rufe ich die Methode presentAlert in viewDidLoad:

override func viewDidLoad() {
    super.viewDidLoad()
    DefaultWireframe.presentAlert("test")
    ...
}

und bekam die Warnung:

Warnung: Versuch UIAlertController: 0x7f904ac0d930 auf UIViewController: 0x7f904ad08040 dessen Blick ist nicht in die Fenster-Hierarchie!

So vermeiden Sie die Warnung, und die Warnung angezeigt?

Es funktioniert, wenn ich zu zeigen versuche-Alarm in der Initiale ViewController, aber es funktioniert nicht in einem anderen ViewController verbunden mit push-segue mit Erster VC.

Sind Sie sicher, dass die rootViewController auf, die Sie versuchen zu präsentieren UIAlertController sichtbar ist und nicht gedeckt durch einen anderen modal-view-controller zum Beispiel?
Drücken Sie die debug-Schaltfläche "Ansichten" (die in der bar über die debug-Konsole) auf dieser viewController. Auf der linken Seite sehen Sie Ihre gesamte Sicht-stack, mit dem Fenster an der Spitze. Sie können der rechten Maustaste auf eine beliebige Ansicht zu drucken, eine Beschreibung. Vergleichen Sie dies zu der Ansicht, rootViewController(); es muß der Fall sein, die zeigen, wie Ihre rootViewController Ansicht nicht mehr in der Hierarchie. Wählen Sie eine Ansicht, und verwenden, statt.
Irgendeine Lösung gefunden? Die Begegnung mit demselben problem.

InformationsquelleAutor Igor Kasuan | 2016-11-17

Schreibe einen Kommentar