Sobes.tech
Junior — Middle

Wie kann man den aktiven ViewController im aktuellen Anwendungskontext bestimmen?

sobes.tech KI

Antwort von AI

Um den aktiven (derzeit angezeigten) ViewController in einer iOS-Anwendung zu bestimmen, kann man die Hierarchie der Controller durchlaufen, beginnend beim Root-Controller des Fensters.

Beispiel einer Swift-Funktion, die den aktuellen sichtbaren ViewController zurückgibt:

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
}

Diese Funktion prüft rekursiv:

  • Navigationscontroller — gibt den sichtbaren Controller im Stack zurück.
  • TabBar-Controller — gibt den ausgewählten Controller zurück.
  • Modal präsentierter Controller — gibt ihn zurück.

Am Ende wird genau der ViewController zurückgegeben, der momentan dem Benutzer angezeigt wird.