Sobes.tech
Junior — Middle

Hoe kan de actieve ViewController in de huidige context van de applicatie worden bepaald?

sobes.tech AI

Antwoord van AI

Om de actieve (huidige weergegeven) ViewController in een iOS-app te bepalen, kun je door de hiërarchie van controllers lopen, beginnend bij de root-controller van het venster.

Voorbeeld van een Swift-functie die de huidige zichtbare ViewController retourneert:

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
}

Deze functie controleert recursief:

  • Navigatiecontroller — geeft de zichtbare controller in de stack terug.
  • Tabbarcontroller — geeft de geselecteerde controller terug.
  • Modaal gepresenteerde controller — geeft deze terug.

Uiteindelijk geeft het precies de ViewController terug die momenteel aan de gebruiker wordt getoond.