美文网首页
利用runtime跳转不同的Controller

利用runtime跳转不同的Controller

作者: 啊啦丁 | 来源:发表于2017-06-15 17:36 被阅读0次

假设传入的字典类型是这样的@{

                                                              @"class": @"ZSShowViewController",

                                                              @"property": @{

                                                                                                 @"ID": @"123",

                                                                                                  @"type": @"12"

                                                                                         }

                                                       }


- (void)push:(NSDictionary *)params

{

        // 类名

         NSString *class =[NSString stringWithFormat:@"%@", params[@"class"]];

         const char *className = [class cStringUsingEncoding:NSASCIIStringEncoding];

          // 从一个字串返回一个类

         Class newClass = objc_getClass(className);

         if(!newClass)

         {

                    // 创建一个类

                   Class superClass = [NSObject class];

                   newClass = objc_allocateClassPair(superClass, className, 0);

                  // 注册创建的这个类

                 objc_registerClassPair(newClass);

         }

       // 创建对象

       id instance = [[newClass alloc] init];

      // 对该对象赋值属性

      NSDictionary * propertys = params[@"property"];

      [propertys enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {

      // 检测这个对象是否存在该属性

                      if([self checkIsExistPropertyWithInstance:instance verifyPropertyName:key]) {

                  // 利用kvc赋值

                                         [instance setValue:obj forKey:key];

                     }

       }];

       // 获取导航控制器

        UITabBarController *tabVC = (UITabBarController *)self.window.rootViewController;

        UINavigationController *pushClassStance = (UINavigationController *)tabVC.viewControllers[tabVC.selectedIndex];

        // 跳转到对应的控制器

        [pushClassStance pushViewController:instance animated:YES];

}

相关文章

网友评论

      本文标题:利用runtime跳转不同的Controller

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