最近在项目中遇到这么一个场景,首页的广告轮播页需要根据服务端的配置,跳转到不通的界面。
首先想到的就是反射,对反射真心的不太熟,所以在网上查查资料,用下面的方法实现的。
-(void)remoteNotificationDictionary:(CHomeAdModel *)model {
NSString *strClassName = model.strTarget;
NSDictionary *dicParams = model.dicParams;
// 根据字符串反射出我们想要的类,并初始化控制器
Class class = NSClassFromString(strClassName);
UIViewController *controller = [[class alloc] init];
// 获取参数列表,使用枚举的方式,对控制器进行KVC赋值
NSDictionary *parameter = dicParams;
[parameter enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
if ([[parameter allKeys] containsObject:key]) {
[vc setValue:obj forKey:key];
}
}];
[self.navigationController pushViewController:controller animated:YES];
}
时间: 2024-11-01 12:09:34