Sobes.tech
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.