Junior — Middle
Ինչպե՞ս կարելի է որոշել գործող ViewController-ը ծրագրի ընթացիկ կոնտեքստում։
sobes.tech AI
Պատասխան AI-ից
Ինքնուրույն որոշելու համար ակտիվ (ներկայումս ցուցադրված) ViewController-ը iOS հավելվածում, կարող եք անցնել վերահսկիչների հիերարխիան, սկսելով պատուհանի արմատային վերահսկիչից:
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-ը, որը ներկայումս ցուցադրվում է օգտվողին։