- UIViewController类或其子类会在初始化时创建一个UIView对象,会作为控制器的默认视图显示出来,可以通过self.view寻址访问。但没有调用loadView方法时,self.view=nil。默认loadView方法(即[super loadView])的作用是产生一个空白的view。
- 且看以下下两个例子:
- (void)loadView { textView=[ [ UITextView alloc ] initWithFrame: [ [ UIScreen mainScreen ] applicationFrame ] ]; textView.text=@"Hello"; self.view=textView; }
- (void)loadView { [super loadView]; textView=[ [ UITextView alloc ] initWithFrame: [ [ UIScreen mainScreen ] applicationFrame ] ]; textView.text=@"Hello"; [self.view addSubview: 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 = …才是提倡的方式。
需要主意的是,loadView的实现需要分两种情况:当你通过Xcode实例化一个类的时候就需要自己在controller中实现这个方法,而在IB中实例化就不需要实现它。
如果仅仅是想要在当前view上增加一些UIButton或是UILabel,应该在viewDidLoad里去做,此时不要实现自己的loadView。
loadView方法的实现(self.view调用addSubview方法与self.view=的区别)
最新推荐文章于 2018-08-22 14:09:32 发布