Junior — Middle
Come si può determinare il ViewController attivo nel contesto attuale dell'applicazione?
sobes.tech AI
Risposta dell'AI
Per determinare il ViewController attivo (attualmente visualizzato) in un'app iOS, è possibile attraversare la gerarchia dei controller, partendo dal controller radice della finestra.
Esempio di funzione in Swift che restituisce il ViewController visibile corrente:
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
}
Questa funzione verifica ricorsivamente:
- Controller di navigazione — restituisce il controller visibile nello stack.
- Controller della barra delle schede — restituisce il controller selezionato.
- Controller presentato modally — lo restituisce.
Infine, restituisce esattamente il ViewController che attualmente viene mostrato all'utente.