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.