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