Junior — Middle
Hogyan lehet meghatározni az aktív ViewController-t az alkalmazás aktuális kontextusában?
sobes.tech MI
Válasz az MI-től
Az iOS alkalmazásban az aktív (jelenleg megjelenő) ViewController meghatározásához végig lehet járni a kontrollerek hierarchiáját, kezdve az ablak gyökér kontrollerénél.
Példa egy Swift függvényre, amely visszaadja a jelenlegi látható ViewControllert:
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
}
Ez a függvény rekurzívan ellenőrzi:
- Navigációs kontrollert — visszaadja a látható kontrollert a veremből.
- TabBar kontrollert — visszaadja a kiválasztott kontrollert.
- Modalisan bemutatott kontrollert — visszaadja azt.
Végül pontosan azt a ViewControllert adja vissza, amelyet jelenleg a felhasználó lát.