OC中NSClassFromString()与NSStringFromClass()的用法及应用场景
1.NSClassFromString()利用一个字符串创建一个类,我是在标签控制器中 UITabBarController中创建它的子控制器中使用的
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
[self addChildViewControllerWithClassName:[ZSHomeViewController description] title:@"首页" imageName:@"home"];
[self addChildViewControllerWithClassName:[ZSDiscoveryViewController description] title:@"发现" imageName:@"Found"];
[self addChildViewControllerWithClassName:[ZSCheckViewController description] title:@"审核" imageName:@"audit"];
[self addChildViewControllerWithClassName:[ZSMessageViewController description] title:@"消息" imageName:@"newstab"];
}
///添加子控制器
- (void)addChildViewControllerWithClassName:(NSString *)className title:(NSString *)title imageName:(NSString *)imageName{
//这么创建的好处是当没有这个对象时,程序不会崩溃
UIViewController *vc = [[NSClassFromString(className) alloc]init];
ZSBaseNavigationViewContrllerView *nav = [[ZSBaseNavigationViewContrllerView alloc]initWithRootViewController:vc];
nav.tabBarItem.title = title;
nav.tabBarItem.image = [UIImage imageNamed:imageName];
//渲染方式,UIImageRenderingModeAlwaysOriginal始终绘制图片的原始状态,不使用tintColor
//UIImageRenderingModeAutomatic // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式。
//UIImageRenderingModeAlwaysTemplate // 始终根据Tint Color绘制图片,忽略图片的颜色信息。
nav.tabBarItem.selectedImage = [[UIImage imageNamed:[imageName stringByAppendingString:@"_press"]]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
[self addChildViewController:nav];
}
这么做的好处是当你的控制器不存在时,这么创建不会让程序崩溃
2.NSStringFromClass() 获取与类型名称同名的字符串
它的应用场景一般是动态的创建类,我是用它创建自定义cell的对象,因为每一种cell都要有不同的ReuseIdentifier,在工程中我们会遇到henduo需要自定义的cell,那么这么做就可以很方便的设置cell的id
+ (instancetype)cellWithTableView:(UITableView *)tableView{
if (self == nil) {
return [[self alloc]init];
}
NSString *className = NSStringFromClass([self class]);
NSString *identifier = [className stringByAppendingString:@"CellId"];
[tableView registerClass:[self class] forCellReuseIdentifier:identifier];
return [tableView dequeueReusableCellWithIdentifier:identifier];
}
OC中NSClassFromString()与NSStringFromClass()的用法及应用场景的更多相关文章
- OC中协议的概念以及用法
OC中协议的概念以及用法,协议也是OC中的一个重点,Foundation框架以及我们后面在写代码都会用到. OC中的协议就是相当于Java中的接口(抽象类),只不过OC中的名字更形象点,因为我们在学习 ...
- 关于oc中出现的typedef的用法/定义函数指针
typedef int (^calculateBlock)(int a,int b); 这里面typedef的作用只是给 calculateBlock取了一个 别名,说明以后可以直接使用. calcu ...
- OC中extern,static,const的用法
1.const的作用: const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p). 例如 NSString *const SIAlertViewWillDismissNotification; ...
- Swift学习笔记 - OC中关于NSClassFromString获取不到Swift类的解决方案
在OC和Swift混编的过程中发现在OC中通过NSClassFromString获取不到Swift中的类,调研了一下发现问题所在,下面是我的解决方案: 问题的发现过程 UIViewController ...
- 关于void*类型的用法(相当于OC中的id类型)
关于void*类型的用法(相当于OC中的id类型) 1.C++语言在对于void* 类型的使用很特别,因为void* 可以间接引用任何其他数据类型的指针,比如int*.float*甚至抽象数据类型的指 ...
- OC中文件的操作
OC中文件操作,在之前的文章中,已经接触到了文件的创建了,但是那不是很具体和详细,这篇文章我们就来仔细看一下OC中是如何操作文件的: 第一.首先来看一下本身NSString类给我们提供了哪些可以操作文 ...
- oc中的反射机制
好久没有总结过了,一直在赶项目... 今天来总结一下OC中的反射机制,有什么不对的地方,还请多多海涵. 反射机制,简单的说就是在程序运行期间通过类的名字来动态的获取类的信息,从而实现动态的创建类,以及 ...
- OC中的SEL解析
OC中的SEL对象即selector对象,用来保存一个方法的地址.下面通过一个Demo来解析SEL的原理.创建一个Person类,Person.h中: #import <Foundation/F ...
- 关于 self 和 super 在oc 中 的疑惑 与 分析
关于 self 和 super 在oc 中 的疑惑 与 分析 面试一定都是很注重 基础的,不管高级还是初级. 虽然基础好跟基础不好都可以写 代码,网上那么多资料. 区分高低也就是研究的深度和广度 ...
随机推荐
- 点赞功能实现 $(tag).css('属性', '样式')
1. 创建标签 document.createElement() 2.$(tag).css('属性', 样式) 赋予标签属性样式 3.设置定时器 改变位置 大小 <!DOCTYPE html&g ...
- Dubbo Overview
Overview Architecture Provider: 暴露服务的服务提供方. Consumer: 调用远程服务的服务消费方. Registry: 服务注册与发现的注册中心. Monitor: ...
- 【C】常用的字符串函数
1. strcpy 函数名:strcpy 用法:char *strcpy(char *destin, char *cource) 功能:将一个字符串从一个拷贝到另外一个 程序示例: #include ...
- JSP中的<jsp:include...>和<%@include %>
jsp中include有两种写法, 都是包含一个页面或者一个文件的意思, 写法略有不同 <jsp:include page = "url" />或者<jsp:in ...
- UISearchDisplayController 阴影遮盖frame调整
iOS7中UISearchDisplayController 与UISearchBar结合使用时,有时候会出现搜索框获得焦点时,阴影遮盖部分挡住了搜索框,影响用户使用,如下图 API中没有阴影图层的接 ...
- 第四章 Windows的图形设备接口及Windows绘图 P83 4-6
实验(实习)名称 图形程序设计及其应用 实验(实习)日期 一.实验目的 1.熟悉图形设备接口的概念及其应用. 二.实验内容及步骤 实验任务 1.熟悉基于图形应用的程序设计: 2.掌握刷新技术及其 ...
- button作用类似于submit
不想提交,可使用以下 <a href="javascript:;" >修改</a>
- 【转】java.sql.SQLException: statement is closed语句被关闭 druid连接池报错
我之前在用druid 1.0.28版本也出现过这个问题, 现象就是: 报这个错的时候, 往往会出现在一条毫无错误的sql执行上报错, sql放到数据库上执行或者单独拎出来执行完全没问题, 但是为什么 ...
- System.Web.HttpUtility VS System.Web.HttpServerUtility VS System.Net.WebUtility
HttpUtility 类作为 HttpServerUtility 类的内部使用,HttpServerUtility 通过System.Web.UI.Page.Server属性(WebForm)/Co ...
- Some_tools
Why and what There are lots of nice or great tools on the internet, sometimes I will just forget a p ...