Avatar ·

Wie bekomme ich den obersten (top-most) UIViewController auf dem Bildschirm einer iOS-App?

Hallo zusammen! Ich schreibe meine erste iOS-App in Swift und bin auf ein Problem gestoßen. Ich habe mehrere modale Fenster (UIAlertController, UIImagePickerController und benutzerdefinierte View-Controller), die manchmal übereinander geöffnet werden. Ich muss programmatisch eine Referenz auf den Controller bekommen, der sich gerade ganz oben in der Hierarchie befindet, um zum Beispiel einen neuen Alert anzuzeigen oder zu prüfen, ob bereits ein modaler Bildschirm geöffnet ist.\n\nIch habe versucht, `UIApplication.shared.keyWindow?.rootViewController` zu verwenden, aber das gibt nur den Root-Controller zurück, nicht den aktuell sichtbaren. Wenn ich einen modalen Controller öffne, ändert sich der rootViewController nicht. Ich habe versucht, rekursiv durch `presentedViewController` zu gehen, aber das funktioniert nicht immer, besonders wenn es einen UINavigationController oder UITabBarController gibt.