Junior — Middle
Wie kann man den aktiven ViewController im aktuellen Anwendungskontext bestimmen?
sobes.tech KI
Antwort von AI
Um den aktiven (derzeit angezeigten) ViewController in einer iOS-Anwendung zu bestimmen, kann man die Hierarchie der Controller durchlaufen, beginnend beim Root-Controller des Fensters.
Beispiel einer Swift-Funktion, die den aktuellen sichtbaren ViewController zurückgibt:
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
}
Diese Funktion prüft rekursiv:
- Navigationscontroller — gibt den sichtbaren Controller im Stack zurück.
- TabBar-Controller — gibt den ausgewählten Controller zurück.
- Modal präsentierter Controller — gibt ihn zurück.
Am Ende wird genau der ViewController zurückgegeben, der momentan dem Benutzer angezeigt wird.