Junior — Middle
Jak lze určit aktivní ViewController v aktuálním kontextu aplikace?
sobes.tech AI
Odpověď od AI
Chcete-li určit aktivní (aktuálně zobrazovaný) ViewController v aplikaci iOS, můžete projít hierarchii kontrolerů, počínaje kořenovým kontrolerem okna.
Příklad funkce v Swift, která vrací aktuálně viditelný ViewController:
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
}
Tato funkce rekurzivně kontroluje:
- Navigační kontroler — vrací viditelný kontroler na zásobníku.
- TabBar kontroler — vrací vybraný kontroler.
- Modalně prezentovaný kontroler — vrací jej.
Na konci vrací právě ten ViewController, který je právě nyní zobrazen uživateli.