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, который сейчас отображается пользователю.