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, който в момента се показва на потребителя.