loadNibNamed
来源:互联网 发布:电脑淘宝怎么分享链接 编辑:程序博客网 时间:2024/05/17 22:19
1、loadNibNamed方法:
-(NSArray *)loadNibNamed:(NSString *)name owner:(id)owner options:(NSDictionary *)options
参数:
name:nib文件的名称
owner:指定name参数所指代的nib文件的File's Owner
options:当nib文件开始时,需要的数据
返回值:返回符合对象的数组。
例子:初始化一个View
CustomCell *cell=(CustomCell *)[tableView dequeueReusableCellWithIdentifier:CustomCellTableIdentifier];
if (cell==nil) {
NSArray *nib=[[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
cell=[nib objectAtIndex:0];// 因为返回的是数组
}
在这个时候生成后会让引用计数器变为1,但是需要注意得,owner:self ,在owner自己dealloc得时候,系统会自动帮你将你自定义view引用计数器-1得。
特别注意:
loadNibNamed:owner:options: 这个函数会返回一个nib的数组。不过,在iPhone2.1包括以后的版本,这个数组的第一个元素,即nib[0]表示的就是除了File‘s Owner 和 File Responder后的第一个东西。在iPhon2.1之前的版本,nib[0]是File's Owner,nib[1]才是除了File‘s Owner 和 File Responder后的第一个东西。
FOR EXAMPLE:
一个继承uiview的类:
图1
在xib中File‘s Owner的class设置为SBVI,连接Outlets。则调用[[NSBundle mainBundle]loadNibNamed:@"SBVI" owner:sbviClass options:nil],即可完成sbviClass中的outlet对象初始化。()
此做法可以用于使用自定义方法(initWithSB:(NSString *)name;)创建SBVI对象,并使用xib文件初始化SBVI的subviews。此时:
图2
这里的View代表着SBVI对象的subviews。
而平时我关联xib的方法是:
图3
这里的Manage View代表的是ManageView对象本身。
不在File‘s Owner中关联Outlets,在objects一栏中创建ManageView设置他的class为要创建的类型( 这里是ManageView),然后关联他的Outlets,不同于上面的在File's Owner中关联,而是在Objects中关联。这样调用[[NSBundle mainBundle]loadNibNamed:@"ManageView" owner:self options:nil],这里的owner参数就无所谓了,随便设置,(猜测)因为我的xib文件中没有对File‘s Owner的Outlets进行关联。所以这句[[NSBundle mainBundle]loadNibNamed:@"ManageView" owner:self options:nil]是一次失败的尝试,它生成了对象但是没有成功赋给别人。所以我需要先保存这些对象即使用数组对象接收:NSArray *nib=[[NSBundle mainBundle] loadNibNamed:@"ManageView" owner:self options:nil];数组中的元素是图3中Objects一栏中的元素,注意,这里并没有包含ManageView中的节点元素,所以Objects个数是1,即nib数组的个数是1,且[nib objectAtIndex:0]即是图3中的Manage View。此时写manageView =[[nib objectAtIndex:0] retain];把xib中Objects中的对象赋给manageView。()
btw:
http://blog.csdn.net/theonezh/article/details/7780495
http://tiny4cocoa.com/thread-2818-1-1.html
- loadNibNamed
- loadNibNamed
- loadNibNamed:方法
- iOS : loadNibNamed
- loadNibNamed 的使用
- loadNibNamed 的使用
- registerNib 和 loadNibNamed
- initWithNibName 和 loadNibNamed 的区别
- loadNibNamed的作用及注意事项
- initWithNibName 和 loadNibNamed 的区别
- initWithNibName、initWithCoder、awakeFromNib、initWithNibName、loadNibNamed
- initWithNibName和loadNibNamed的区别
- loadNibNamed后是否需要release IBOutlets
- initWithNibName 和 [[NSBundle mainBundle] loadNibNamed] 的区别
- initWithNibName 和 loadNibNamed 的区别和联系
- initWithNibName、initWithCoder、awakeFromNib和 loadNibNamed详解
- iphone使用loadNibNamed载入view在…
- initWithNibName 和 loadNibNamed 的区别和联系
- MyEclipse 快捷键
- Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)
- 微信SDK分享出现的各种问题
- 【游戏特效Tommy原创教程】基础原理之UV动画小技巧
- Linux ALSA声卡驱动之六:ASoC架构中的Machine
- loadNibNamed
- Linux ALSA声卡驱动之七:ASoC架构中的Codec
- nginx环境下配置nagios-关于start_perl_cgi.sh
- error at ::0 can't find referenced pointcut..可能出现错误的原因
- 有一亿个随机数,不排序如何找出其中位数
- 设置ubuntu12.04默认从命令行界面启动
- IOS开发常用的调试命令
- Linux ALSA声卡驱动之八:ASoC架构中的Platform
- 字符串常见问题总结(一)