Sobes.tech
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-ը, որը ներկայումս ցուցադրվում է օգտվողին։