LoginSignup
38
37

More than 3 years have passed since last update.

現在表示されているViewControllerを取得する方法

Last updated at Posted at 2018-02-03

背景

iOSアプリ向けのSDKを開発する場合、アプリの画面上にポップアップやダイアログ等のViewを表示したい場合があります。その場合、現在表示されているViewControllerにviewをaddSubViewする方法が考えられますが、SDK開発の場合はアプリ側の実装を知ることができないため、ViewControllerにアクセスするためにやや特殊な手法を用いる必要があります。

手法

下記のようにUIApplicationからrootViewControllerにアクセスすることで、現在表示されているViewControllerを取得することができます。

func getTopViewController() -> UIViewController? {
    if let rootViewController = UIApplication.shared.keyWindow?.rootViewController {
        var topViewController: UIViewController = rootViewController

        while let presentedViewController = topViewController.presentedViewController {
            topViewController = presentedViewController
        }

        return topViewController
    } else {
        return nil
    }
}

ViewControllerを取得したら、下記のようにaddSubViewすることで画面上に任意のViewを表示させることができるでしょう。

if let topViewController: UIViewController = getTopViewController() {
    topViewController.view.addSubview(customView)
}
38
37
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
37