読者です 読者をやめる 読者になる 読者になる

そーす

福岡在住のプログラマ

表示されているViewControllerを取得する

iOS Swift Extension

f:id:saburesan:20160427075732p:plain

saburesan.hatenablog.com

この記事、ミスが有りました。表示されているViewControllerの取得の部分の実装が不十分でした。

こちらが新しい方法です。

UIViewControllerExtention.swift

extension UIViewController {
    var currentTopViewController: UIViewController? {
        if let viewController = self as? UINavigationController {
            return viewController.topViewController?.currentTopViewController
        }
        if let viewController = self as? UITabBarController {
            return viewController.selectedViewController?.currentTopViewController
        }
        if let viewController = self.presentedViewController {
            return viewController.currentTopViewController
        }
        return self
    }
}

AppDelegate.swift

    func applicationDidEnterBackground(application: UIApplication) {
        window?.rootViewController?.currentTopViewController?.applicationDidEnterBackground(application)
    }

    func applicationWillEnterForeground(application: UIApplication) {
        window?.rootViewController?.currentTopViewController?.applicationWillEnterForeground(application)
    }