Sobes.tech
Junior — Middle

Tətbiqin hazırkı kontekstində aktiv ViewController necə müəyyən edilir?

sobes.tech Süni İntellekt

AI-dan cavab

iOS tətbiqində aktiv (hazırda göstərilən) ViewController-i müəyyən etmək üçün, pəncərənin kök controllerindən başlayaraq controllerlər hierarxiyasını keçə bilərsiniz.

Hazırkı görünən ViewController-i qaytaran Swift funksiyası nümunəsi:

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 şəkildə yoxlayır:

  • Nəzarətçi — stack-də görünən nəzarətçini qaytarır.
  • TabBar nəzarətçisi — seçilmiş nəzarətçini qaytarır.
  • Modal təqdim olunan nəzarətçi — onu qaytarır.

Nəticədə, hazırda istifadəçiyə göstərilən ViewController-i dəqiq olaraq qaytarır.