Swift 通过字符串 转换成对应的 UIViewControl

2017-03-21  本文已影响336人  壹点微尘

swift有一个命名空间的概念, 所以不能像OC那样去转换, 我们可以打印下ViewController 就可以看出与OC的区别

print(ViewController()) //打印结果:<nameSpace.ViewController: 0x7fe04b70c890>

打印结果可以看出ViewController前面拼接了nameSpace. ,nameSpace就是这个工程的名字, 就是传说中的命名空间

那Swift中该怎么办呢? 下面我们
直接上代码:

// 1.动态获取命名空间
guard let nameSpace =Bundle.main.infoDictionary!["CFBundleExecutable"]as? String else{
return;
}
// 2.根据字符串获取对应的Class并转成控制器的类型
guard let className =NSClassFromString(nameSpace + "." + "ViewController")as? UIViewController.Type else{
return
}
// 3.创建对应的控制器对象
letvc = className.init()
print(vc)   //打印结果:<nameSpace.ViewController: 0x7fe04b70c890>

可以看出 print(ViewController()) 和 print(vc) 结果是一样

上一篇 下一篇

猜你喜欢

热点阅读