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.