Junior — Middle
Ako určiť aktívny ViewController v aktuálnom kontexte aplikácie?
sobes.tech AI
Odpoveď od AI
Na určenie aktívne (aktuálne zobrazovanej) ViewController v iOS aplikácii môžete prejsť hierarchiu kontrolérov, začínajúc od koreňového kontroléra okna.
Príklad funkcie v Swift, ktorá vracia aktuálne viditeľný 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
}
Táto funkcia rekurzívne kontroluje:
- Navigačný kontrolér — vracia viditeľny kontrolér na zásobníku.
- Kontrolér záložiek — vracia vybraný kontrolér.
- Modalne prezentovaný kontrolér — vracia ho.
Na konci vracia presne ten ViewController, ktorý je práve teraz zobrazený používateľovi.