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-ს აბრუნებს, რომელიც ამჟამად მომხმარებელს უჩვენებს.