您的位置:首页 > 其它

【提高】initWithNibName和loadNibNamed的区别和联系

2016-02-18 17:55 495 查看
联系:都可以用来从xib文件加载用户界面到我们代码中去。这样可以通过操作这个加载进来的对象操作xib文件内容。

1. ShowViewController的initWithNibName方法

ShowViewController * showMessage = [[ShowViewController alloc]
 
                                                initWithNibName:@"ShowViewController" bundle:nil];
 
            self.showViewController = showMessage;
 
            [showMessage release];

 initWithNibName 延迟加载 这个view上控件为nil 只有到需要显示的时候才不是nil


且nib文件中的File’s owner是控制器

2.VideoCellController的loadNibNamed方法

NSArray * nib = [[NSBundle mainBundle] loadNibNamed:@"Save3ViewController" 
                                                          owner:self options:nil] ;
self.showViewController = [nib lastObject];
[nib objectAtIndex:0];
 
实时加载
这时候xib文件中File’s owner是NSObject
如果用了loadNibNamed加载initWithNibNamed用到的格式的xib文件  会报错误
setValue:forUndefinedKey
load the xxxnib but the view outlet was not set.
这两种方法需要加载的xib文件是不一样的,initWithNibNamed需要的xib文件的文件所有者必须要是需要加载的类。
而loadNibNamed需要加载的xib文件的File Owner为NSObject。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: