Sobes.tech
Junior — Middle

Kuidas määrata kindlaks aktiivne ViewController rakenduse praeguses kontekstis?

sobes.tech AI

Vastus AI-lt

Et määrata aktiivne (praegu kuvatav) ViewController iOS rakenduses, saate läbida kontrollijate hierarhia, alustades akna juurkontrollijast.

Swiftis näide funktsioonist, mis tagastab praeguse nähtava ViewControlleri:

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
}

See funktsioon kontrollib rekursiivselt:

  • Navigatsioonikontroller — tagastab nähtava kontrollija virnas.
  • Tabbar-kontroller — tagastab valitud kontrollija.
  • Modaalne esitatud kontrollija — tagastab selle.

Lõpuks tagastab see täpselt selle ViewControlleri, mis praegu kasutajale kuvatakse.