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属性确实会崩溃.需要在跳转的控制器里面声明这个属性,才不会崩溃,我写的标题也不是动态的增加属性,而是动态的赋值,之前的标题有点让人误解已修改

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,793评论 1 32
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,795评论 8 265
  • 1、通知传值 首先我们来看看通知传值,通知可实现任意界面之间的数据传递,但必须满足一个条件,就是保证在发送通知的时...
    Insit阅读 8,552评论 0 2
  • C语言相关面试题 1.static有什么用途? 答案:在C语言中,static主要定义全局静态变量,定义局部静态变...
    ios南方阅读 11,857评论 1 18
  • C语言相关面试题 1.static有什么用途? 答案:在C语言中,static主要定义全局静态变量,定义局部静态变...
    Leeson1989阅读 6,807评论 0 20