今後使用することがあるかどうかはわからないのですが、今回使う機会があったので備忘録としてまとめ。
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 のクラス名を取得する方法についてでした。
ご参考になれば幸いです。