Sobes.tech
Junior — Middle

Kako odrediti aktivni ViewController u trenutnom kontekstu aplikacije?

sobes.tech АИ

Одговор од АИ

Da biste odredili aktivni (trenutno prikazani) ViewController u iOS aplikaciji, možete proći kroz hijerarhiju kontrolera, počevši od korenskog kontrolera prozora.

Primer funkcije u Swift-u koja vraća trenutni vidljivi ViewController:

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
}

Ova funkcija rekurzivno proverava:

  • Navigacioni kontroler — vraća vidljiv kontroler na stogu.
  • Kontroler tab bara — vraća izabrani kontroler.
  • Modalno prikazan kontroler — vraća ga.

Na kraju, vraća tačno onaj ViewController koji je trenutno prikazan korisniku.