【Swift】現在表示されているViewControllerのクラス名を取得する

今後使用することがあるかどうかはわからないのですが、今回使う機会があったので備忘録としてまとめ。
Swift プロジェクトで、現在表示されている ViewController のクラス名を取得する方法についてです。

参考にさせていただいた記事はこちらから。

現在表示されているViewControllerのクラス名を取得する – 野生のプログラマZ
http://harumi.sakura.ne.jp/wordpress/2019/09/21/現在表示されているviewcontrollerのクラス名を取得する/

 

コードはこちらです。
こちらを、現在表示されている ViewController のクラス名を取得したい ViewController に追加します。

extension UIViewController {
    var classname: String {
        return String(describing: type(of: self))
    }
}

extension UIApplication {
    class func topViewController(controller: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? {
        if let navigationController = controller as? UINavigationController {
            return topViewController(controller: navigationController.visibleViewController)
        }
        if let tabController = controller as? UITabBarController {
            if let selected = tabController.selectedViewController {
                return topViewController(controller: selected)
            }
        }
        if let presented = controller?.presentedViewController {
            return topViewController(controller: presented)
        }
        return controller
    }
}

クラス名を取得する場合は、下記のコードを追加します。

if let topController = UIApplication.topViewController()  {
    let name = topController.classname
}

上記コードの 2行目の変数 name に取得したクラス名が文字列で代入されますので、あとは任意のクラス名の文字列で比較するなど、仕様に合わせてご利用ください。

 

以上、Swift で現在表示されている ViewController のクラス名を取得する方法についてでした。
ご参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG