以编程方式创建视图
问题描述:
我编写了一个简单的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未在窗口中加载。 这是怎么回事?
答
因为如果您没有设置视图控制器的视图属性,那么视图控制器的视图为零,而无视图意味着空白屏幕。
如果您尝试显示视图控制器的视图为零,您会发生什么?
当您首次引用其视图属性时,通常视图控制器会创建它们自己的空视图(或从nib文件加载它),但由于您重写了loadView方法,因此必须自行设置视图。
您的代码可能会更容易理解,如果这样写的 - 具有相同的名称可能是你的问题的根源的观点变量和视图属性:
-(void)loadView
{
self.view = [[UIView alloc]initWithFrame:[UIScreen mainScreen].applicationFrame];
self.view.backgroundColor = [UIColor grayColor];
}
顺便说一句,如果你不使用ARC ,你需要在将它分配给self.view之前自动释放上面的UIView,否则你会泄漏。
想要指出'greyColor'不适合我,但'grayColor'没有。干杯! – joshtronic 2014-03-30 14:22:15