Sobes.tech
Junior — Middle

Ilovadagi joriy kontekstda faol ViewController qanday aniqlanadi?

sobes.tech AI

AIdan javob

iOS ilovasida faol (hozirda ko'rsatilayotgan) ViewController'ni aniqlash uchun, oynaning asosiy controlleridan boshlab controllerlar hierarxiyasini yurish mumkin.

Hozirgi ko'rinadigan ViewController'ni qaytaradigan Swift funksiyasi misoli:

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
}

Bu funksiya rekursiv tarzda tekshiradi:

  • Navigatsiya controlleri — stackdagi ko'rinadigan controllerni qaytaradi.
  • Tabbar controlleri — tanlangan controllerni qaytaradi.
  • Modal tarzda taqdim etilgan controller — uni qaytaradi.

Natijada, hozirda foydalanuvchiga ko'rsatilayotgan ViewController aniqlanadi.