iOS
Широкий спектр приложений
Поиск…
Получить самый высокий UIViewController
Общий подход к получению самого верхнего UIViewController
заключается в получении RootViewController вашего активного UIWindow
. Я написал расширение для этого:
extension UIApplication {
func topViewController(_ base: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController {
if let nav = base as? UINavigationController {
return topViewController(nav.visibleViewController)
}
if let tab = base as? UITabBarController {
if let selected = tab.selectedViewController {
return topViewController(selected)
}
}
if let presented = base?.presentedViewController {
return topViewController(presented)
}
return base!
}
Перехват системных событий
Используя NotificationCenter iOS, который может быть очень мощным, вы можете перехватить определенные события приложения:
NotificationCenter.default.addObserver(
self,
selector: #selector(ViewController.do(_:)),
name: NSNotification.Name.UIApplicationDidBecomeActive,
object: nil)
Вы можете зарегистрироваться для большего количества событий, просто взгляните на https://developer.apple.com/reference/foundation/nsnotification.name .
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow