标签:
// 以后自定义控制器建议写这个方法,让控制器一创建出来就拥有某些属性
// init方法内部默认会调用initWithNibName方法
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.hidesBottomBarWhenPushed=YES; //当push到下一个页面时隐藏底部导航条
}
return self;
}
1. ShowViewController的initWithNibName方法
ShowViewController* showMessage = [[ShowViewController alloc]
initWithNibName:@"ShowViewController" bundle:nil];
self.showViewController = showMessage;
2.VideoCellController的loadNibNamed方法
NSArray * nib = [[[NSBundle mainBundle]loadNibNamed:@"Save3ViewController"
owner:self options:nil] lastObject];
1.他们的联系:可以使用此方法加载用户界面(xib文件)到我们的代码中,这样,可以通过操作这个加载进来的(xib)对象,来操作xib文件内容。
2.区别:
(1).initWithNibName要加载的xib的类为我们定义的视图控制器类
loadNibNamed要加载的xib的类为NSOjbect。
(2).加载方式不同
initWithNibName方法:是延迟加载,这个View上的控件是 nil 的,只有到 需要显示时,才会不是 nil
loadNibNamed方法:即时加载,用该方法加载的xib对象中的各个元素都已经存在。
3.initWithNibName:nibNameOrNil得执行顺序:
执行sub时输出顺序:
A-initNIb
A-view
supper-A
B-View
supper-A
B-initNIb
sub-initWithNibName: 里调用supper的initWithNibName:
superclass的initWithNibName方法结束,表示nib文件已加载,则调用sub的 viewDidLoad方法。于是应调用[subclass viewDidLoad]方法。
subclass的viewDidLoad方法又调用了supclass的viewDidLoad方法。
最后才是initWithNibName方法剩余的代码
结论,你在sub里面设置的param=sub-B,并没有起作用输出,因为,在设置之前,sub的view已经执行过了。
iOS中initWithNibName 和 loadNibNamed 的区别和联系(参考孤独的豆沙包)
标签:
原文地址:http://www.cnblogs.com/lv14/p/5012451.html