Swift_通过字符串创建对应的类

注:因为Swift新增了命名空间的概念,所以通过一个字符串来创建一个类必须加上命名空间

  • 实现代码
func addChildViewController(childControllerName: String, title : String, imageName : String) {
      //1.动态获取命名空间
        guard let name = NSBundle.mainBundle().infoDictionary!["CFBundleExecutable"] as? String else {
            return
        }
      //2.通过类名来创建对应的类
        let cls : AnyClass? = NSClassFromString(name + "." + childControllerName)

      //3.Swift中如果想通过一个Class来创建一个对象,必须告诉系统这个Class的确切类型
        guard let clsType = cls as? UITableViewController.Type else {
            return
        }

        //4.通过Class创建对象
        let childController = clsType.init()

        //5.设置controller的相关属性
        childController.tabBarItem.image = UIImage(named: imageName)
        childController.tabBarItem.selectedImage = UIImage(named: imageName + "_highlighted")
        childController.title = title
        let vc = UINavigationController.init(rootViewController: childController)
        self.addChildViewController(vc)
    }

你可能感兴趣的:(Swift_通过字符串创建对应的类)