Recherche…


Obtenez le meilleur UIViewController

Une approche courante pour obtenir le meilleur UIViewController consiste à obtenir le RootViewController de votre UIWindow active. J'ai écrit une extension pour cela:

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!
}

Événements du système d'interception

En utilisant le NotificationCenter d’iOS, qui peut être très puissant, vous pouvez intercepter certains événements à l’échelle de l’application:

NotificationCenter.default.addObserver(
        self,
        selector: #selector(ViewController.do(_:)),
        name: NSNotification.Name.UIApplicationDidBecomeActive,
        object: nil)

Vous pouvez vous inscrire à beaucoup d'autres événements, regardez simplement https://developer.apple.com/reference/foundation/nsnotification.name .



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow