Sobes.tech
Junior — Middle

Como pode determinar o ViewController ativo no contexto atual da aplicação?

sobes.tech IA

Resposta da IA

Para determinar o ViewController ativo (atualmente visível) numa aplicação iOS, pode percorrer a hierarquia de controladores, começando pelo controlador raiz da janela.

Exemplo de função em Swift que devolve o ViewController visível atual:

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
}

Esta função verifica recursivamente:

  • Controlador de navegação — devolve o controlador visível na pilha.
  • Controlador de barra de abas — devolve o controlador selecionado.
  • Controlador apresentado modalmente — devolve-o.

No final, devolve exatamente o ViewController que está atualmente a ser exibido ao utilizador.