Avatar ·

Cómo obtener el UIViewController más superior (top-most) en la pantalla de una aplicación iOS

¡Hola a todos! Estoy escribiendo mi primera aplicación iOS en Swift y me encontré con un problema. Tengo varias ventanas modales (UIAlertController, UIImagePickerController y view controllers personalizados) que a veces se abren una encima de otra. Necesito obtener mediante programación una referencia al controller que está actualmente en la parte superior de la jerarquía para, por ejemplo, mostrar una nueva alerta o verificar si ya hay una pantalla modal abierta. Intenté usar `UIApplication.shared.keyWindow?.rootViewController`, pero esto solo da el controller raíz, no el actualmente visible. Si abro un controller modal, el rootViewController no cambia. Intenté recorrer recursivamente `presentedViewController`, pero esto no siempre funciona, especialmente si hay un UINavigationController o UITabBarController. Aquí hay un ejemplo de mi código, que no siempre encuentra el controller correctamente: ```swift func getTopViewController() -> UIViewController? { if var topController = UIApplication.shared.keyWindow