Sobes.tech
Junior — Middle

Cum se poate determina ViewController-ul activ în contextul actual al aplicației?

sobes.tech AI

Răspuns de la AI

Pentru a determina ViewController-ul activ (cel curent vizibil) într-o aplicație iOS, puteți parcurge ierarhia controlerelor, începând cu controlerul rădăcină al ferestrei.

Exemplu de funcție în Swift care returnează ViewController-ul vizibil curent:

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
}

Această funcție verifică recursiv:

  • Controler de navigație — returnează controlerul vizibil din stivă.
  • Controler de tab-uri — returnează controlerul selectat.
  • Controler prezentat modal — îl returnează.

În final, returnează exact ViewController-ul care este afișat în prezent utilizatorului.