Swift 根据类名生成控制器并动态的给属性赋值(要保证类是已经存在的.并且赋值的属性也要存在)

 let c = NSClassFromString(“类名”)! as! UIViewController.Type
 let vc = c.init()
 if (taskModel?.inviteCode?.isEmpty == false) {
      vc.setValue(taskModel?.inviteCode, forKey: "inviteCode")
  }
  vc.hidesBottomBarWhenPushed = true
  self.navigationController.pushViewController(vc, animated: true)

1.根据类名创建控制器
2.控制器有个属性叫做inviteCode,
使用vc.setValue(taskModel?.inviteCode, forKey: "inviteCode")给这个属性复制

对于以下的评论做一下解释和答疑
你确定setValue赋值在swift中运行不崩溃吗? 不要误人子弟
答:如果要跳转的控制器没有声明inviteCode属性确实会崩溃.需要在跳转的控制器里面声明这个属性,才不会崩溃,我写的标题也不是动态的增加属性,而是动态的赋值,之前的标题有点让人误解已修改

你可能感兴趣的:(Swift 根据类名生成控制器并动态的给属性赋值(要保证类是已经存在的.并且赋值的属性也要存在))