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