Junior — Middle
Kaip nustatyti aktyvų ViewController esantį dabartiniame programos kontekste?
sobes.tech AI
Atsakymas iš AI
Norint nustatyti aktyvų (dabartinį rodomą) ViewController iOS programoje, galite pereiti per kontrolerių hierarchiją, pradedant nuo lango šaknies kontrolerio.
Pavyzdys Swift funkcijos, kuri grąžina dabartinį matomą 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
}
Ši funkcija rekursyviai tikrina:
- Navigacijos kontrolerį — grąžina matomą kontrolerį iš stovo.
- Kortelės juostos kontrolerį — grąžina pasirinkto kontrolerio.
- Modaliniu būdu pateiktą kontrolerį — grąžina jį.
Galų gale, ji tiksliai grąžina tą ViewController, kuris šiuo metu yra rodomas naudotojui.