Sobes.tech
Junior — Middle

Comment peut-on déterminer le ViewController actif dans le contexte actuel de l'application?

sobes.tech IA

Réponse de l'IA

Pour déterminer le ViewController actif (actuellement affiché) dans une application iOS, vous pouvez parcourir la hiérarchie des contrôleurs, en commençant par le contrôleur racine de la fenêtre.

Exemple de fonction en Swift qui renvoie le ViewController visible actuel :

func getVisibleViewController(_ rootViewController: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? {
    if let nav = rootViewController as? UINavigationController {
        return getVisibleViewController(nav.visibleViewController)
    }
    if let tab = rootViewController as? UITabBarController {
        if let selected = tab.selectedViewController {
            return getVisibleViewController(selected)
        }
    }
    if let presented = rootViewController?.presentedViewController {
        return getVisibleViewController(presented)
    }
    return rootViewController
}

Cette fonction vérifie récursivement :

  • Contrôleur de navigation — retourne le contrôleur visible dans la pile.
  • Contrôleur de barre d’onglets — retourne le contrôleur sélectionné.
  • Contrôleur présenté modally — le retourne.

Finalement, elle retourne le ViewController qui est actuellement affiché à l’utilisateur.