IBOutlet的初始化过程

来源:互联网 发布:网络传销与传统传销 编辑:程序博客网 时间:2024/05/22 06:49

       今天写了个两个视图相互传值的程序,发现了一个小问题。解决办法和楼下引用的文献是一样的,我是解决之后去谷歌的,但是发现这个问题别人也遇到过,而且也找到了变通的法子。

The nib file you specify is not loaded right away. It is loaded the first time the view controller’s view is accessed. If you want to perform additional initialization after the nib file is loaded, override the viewDidLoad method and perform your tasks there.

个人观点是把IBOutlet当作subview,采用延迟加载的策略,具体而言就是在显示视图控制器对应的视图时,紧随view加载,可以viewDidLoad里设置或者在视图显示出来的时候,按道理来说在viewDidLoad中比较自然~~~~因为经过我的测试,在iewDidLoad中的行为要先于在presentViewController:后对IBOutlet的设置。


http://blog.csdn.net/zxc110110/article/details/7184528

BOutlet变量的生命周期 IBOutlet怎么会是nil呢(内功篇)


当使用initWithNibName 初始化viewController时,发现IBoutlet修饰的变量为nil。原因是该viewController或view没有加载到当前视图中,不处于活动状态。

类似的一个情况: http://blog.prosight.me/index.php/tag/iboutlet

今天遇到一个问题困扰了很久。 代码如下:
1.
2. FileOverviewViewController *fileOverviewViewController =[[FileOverviewViewController alloc]initWithNibName:@”FileOverviewView” bundle:nil];
3. // AAAAA
4. [self.navigationControllerpushViewController:fileOverviewViewController animated:YES];
5. // BBBBBB
6.
如果你有这个Controller中的view里面有IBOutlet的变量,如果你在A的地方进行赋值或者其他操作的话,界面将不会有任何更新,那些IBoutlet变量的值都为NULL,如果在B处设置就可以正常显示了。
结论: 如果你使用navigation Controller的话,一定要在push了这个ViewController之后再操作这个ViewController中的IBOutlet变量,否则这个变量会因为不在作用范围内而无法操作。
扩展开来也就是说只有当一个ViewController被载入处于活动状态的时候,这个ViewController中的IBOutlet变量才能正常使用,否则都会因为不在作用范围内而无法正常使用的

如果不使用navigation Controlle的话,必须在

[XXViewaddSubview:fileOverviewViewController.view]后再使用IBoutlet变量