开始写新的app,还是没使用ib来生成界面
之前cocoa china上找了个sample,见sample里在init方法里人工的去调用loadView方法,左思右想感觉别扭
对loadView的方法还存有疑问,于是继续google,看官方文档,顺便找到以下这篇文章
mark一下,希望对loadView方法的理解有进一步的帮助
转自:http://www.xiediansha.com/?p=165
UIViewController类或其子类会在初始化时创建一个UIView对象,会作为控制器的默认视图显示出来,可以通过self.view寻址访 问。但没有调用loadView方法时,self.view=nil。默认loadView方法(即[super loadView])的作用是产生一个空白的view。
且看以下下两个例子:
�
- (void)loadView
{
[super loadView];
textView=[ [ UITextView alloc ] initWithFrame: [ [ UIScreen mainScreen ] applicationFrame ] ];
textView.text=@"Hello";
[self.view addSubview: textView];
}
-
�
-
-
(
void
)loadView
-
{
-
textView
=
[
[ UITextView alloc
] initWithFrame
:
[
[ UIScreen mainScreen
] applicationFrame
]
];
-
textView.text
=
@
"Hello";
-
self.view
=textView;
-
}
两段代码起到的作用相同,但前一个例子把textView加入到self.view中,而后者则让self.view直接指向了 textView。把textView加入到self.view中则self.view不能为nil,因此需要调用[super loadView]方法,后者不需要。
显然,继承UIViewController的subclass要实现其load方法时,若采用添加view的方式,我们只要在loadView中增加一句[super loadView]就没有问题了。但这并不是Cocoa的设计者所期望的。self.view = …才是提倡的方式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。