Sobes.tech
Junior — Middle

როგორ შეიძლება განსაზღვრო მიმდინარე აპლიკაციის კონტექსტში აქტიური ViewController?

sobes.tech AI

პასუხი AI-სგან

iOS პროგრამაში აქტიური (ამჟამად გამოჩენილი) ViewController-ის განსაზღვრისთვის, შეგიძლიათ გადახედოთ კონტროლერების ჰიერქიას, დაწყებული ფანჯრის ძირითადი კონტროლერიდან.

Swift-ში მაგალითი ფუნქცია, რომელიც აბრუნებს მიმდინარე ხილულ 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
}

ეს ფუნქცია რეკურსიულად შემოწმებს:

  • ნავიგაციის კონტროლერი — აბრუნებს ხილულ კონტროლერს სთეკში.
  • ტაბბარ კონტროლერი — აბრუნებს არჩეულ კონტროლერს.
  • მოდალურად წარმოდგენილი კონტროლერი — აბრუნებს მას.

დასასრულ, ის ზუსტად იმ ViewController-ს აბრუნებს, რომელიც ამჟამად მომხმარებელს უჩვენებს.