美文网首页
Swift 通过字符串 转换成对应的 UIViewControl

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

作者: 壹点微尘 | 来源:发表于2017-03-21 09:22 被阅读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) 结果是一样

相关文章

网友评论

      本文标题:Swift 通过字符串 转换成对应的 UIViewControl

      本文链接:https://www.haomeiwen.com/subject/tepwnttx.html