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ди кайтарат.