Junior — Middle
Kako odrediti aktivni ViewController u trenutnom kontekstu aplikacije?
sobes.tech АИ
Одговор од АИ
Da biste odredili aktivni (trenutno prikazani) ViewController u iOS aplikaciji, možete proći kroz hijerarhiju kontrolera, počevši od korenskog kontrolera prozora.
Primer funkcije u Swift-u koja vraća trenutni vidljivi 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
}
Ova funkcija rekurzivno proverava:
- Navigacioni kontroler — vraća vidljiv kontroler na stogu.
- Kontroler tab bara — vraća izabrani kontroler.
- Modalno prikazan kontroler — vraća ga.
Na kraju, vraća tačno onaj ViewController koji je trenutno prikazan korisniku.