Sobes.tech
Junior — Middle

Ako určiť aktívny ViewController v aktuálnom kontexte aplikácie?

sobes.tech AI

Odpoveď od AI

Na určenie aktívne (aktuálne zobrazovanej) ViewController v iOS aplikácii môžete prejsť hierarchiu kontrolérov, začínajúc od koreňového kontroléra okna.

Príklad funkcie v Swift, ktorá vracia aktuálne viditeľný 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
}

Táto funkcia rekurzívne kontroluje:

  • Navigačný kontrolér — vracia viditeľny kontrolér na zásobníku.
  • Kontrolér záložiek — vracia vybraný kontrolér.
  • Modalne prezentovaný kontrolér — vracia ho.

Na konci vracia presne ten ViewController, ktorý je práve teraz zobrazený používateľovi.