码迷,mamicode.com
首页 > 其他好文 > 详细

OC中NSClassFromString()与NSStringFromClass()的用法及应用场景

时间:2017-01-21 14:02:14      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:nil   创建   discovery   不同的   white   审核   queue   字符串   自定义cell   

1.NSClassFromString()利用一个字符串创建一个类,我是在标签控制器中 UITabBarController中创建它的子控制器中使用的

 1 - (void)viewDidLoad {
 2     [super viewDidLoad];
 3     self.view.backgroundColor = [UIColor whiteColor];
 4     
 5     [self addChildViewControllerWithClassName:[ZSHomeViewController description] title:@"首页" imageName:@"home"];
 6     [self addChildViewControllerWithClassName:[ZSDiscoveryViewController description] title:@"发现" imageName:@"Found"];
 7     [self addChildViewControllerWithClassName:[ZSCheckViewController description] title:@"审核" imageName:@"audit"];
 8     [self addChildViewControllerWithClassName:[ZSMessageViewController description] title:@"消息" imageName:@"newstab"];
 9     
10 }
11 
12 ///添加子控制器
13 - (void)addChildViewControllerWithClassName:(NSString *)className title:(NSString *)title imageName:(NSString *)imageName{
14     //这么创建的好处是当没有这个对象时,程序不会崩溃
15     UIViewController *vc = [[NSClassFromString(className) alloc]init];
16     ZSBaseNavigationViewContrllerView *nav = [[ZSBaseNavigationViewContrllerView alloc]initWithRootViewController:vc];
17     nav.tabBarItem.title = title;
18     nav.tabBarItem.image = [UIImage imageNamed:imageName];
19     //渲染方式,UIImageRenderingModeAlwaysOriginal始终绘制图片的原始状态,不使用tintColor
20     //UIImageRenderingModeAutomatic  // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式。
21     //UIImageRenderingModeAlwaysTemplate   // 始终根据Tint Color绘制图片,忽略图片的颜色信息。
22     nav.tabBarItem.selectedImage = [[UIImage imageNamed:[imageName stringByAppendingString:@"_press"]]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
23     
24     [self addChildViewController:nav];
25 }

这么做的好处是当你的控制器不存在时,这么创建不会让程序崩溃

2.NSStringFromClass() 获取与类型名称同名的字符串

它的应用场景一般是动态的创建类,我是用它创建自定义cell的对象,因为每一种cell都要有不同的ReuseIdentifier,在工程中我们会遇到henduo需要自定义的cell,那么这么做就可以很方便的设置cell的id

1 + (instancetype)cellWithTableView:(UITableView *)tableView{
2     if (self == nil) {
3         return [[self alloc]init];
4     }
5     NSString *className = NSStringFromClass([self class]);
6     NSString *identifier = [className stringByAppendingString:@"CellId"];
7     [tableView registerClass:[self class] forCellReuseIdentifier:identifier];
8     return [tableView dequeueReusableCellWithIdentifier:identifier];
9 }

 

 

OC中NSClassFromString()与NSStringFromClass()的用法及应用场景

标签:nil   创建   discovery   不同的   white   审核   queue   字符串   自定义cell   

原文地址:http://www.cnblogs.com/losedMemory/p/6336938.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!