我写了一个简单的ios应用程序。我的所有视图都是以编程方式创建的。 这是一些代码
rootViewController.m
-(void)loadView
{
UIView *view = [[UIView alloc]initWithFrame:[UIScreen mainScreen].applicationFrame];
self.view = view;
self.view.backgroundColor = [UIColor greyColor];
}
在appDelegate中,我将rootViewController视图添加到窗口,一切正常。但如果表达
self.view = view
被删除rootViewController未加载到窗口中。 为什么会这样?
答案 0 :(得分:4)
因为如果你没有设置视图控制器的视图属性,那么视图控制器的视图是nil,而nil视图意味着一个空白屏幕。
如果您尝试使用零视图显示视图控制器,您会发生什么?
通常,视图控制器在您第一次引用其视图属性时会创建自己的空视图(或从nib文件加载它),但由于您要覆盖loadView方法,因此必须自己设置视图。
如果这样编写,您的代码可能更容易理解 - 具有相同名称的视图变量和视图属性可能是您混淆的原因:
-(void)loadView
{
self.view = [[UIView alloc]initWithFrame:[UIScreen mainScreen].applicationFrame];
self.view.backgroundColor = [UIColor grayColor];
}
顺便提一下,如果您不使用ARC,则需要在将其分配给self.view之前自动发布上面的UIView,否则您将发生泄漏。