String->Class

Swift中引入了命名空间的概念,转Class需要拼接命名空间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

//这是一个简单的通过字符串类名,转Class然后初始化后跳转的一个小例子
@objc func OnClick(){

//控制器字符串名称
let vcNameString = "OneViewController"
//获取命名空间也就是项目名称
let clsName = Bundle.main.infoDictionary!["CFBundleExecutable"] as? String

//拼接
let className=clsName! + "." + vcNameString

//字符串转Class 需要注意的是这里的`UIViewController`强转必须带上`.Type`,否则转换不成功
let classT = NSClassFromString(className)! as! UIViewController.Type


URLRouter.shared.pushViewController(viewController:classT.init() , animated: true)
}//成功完成跳转
  • 注意
    1. Swift中引入了命名空间的概念,转Class需要拼接命名空间
    2. 这里的UIViewController强转必须带上.Type,否则转换不成功