loadView学习总结
来源:互联网 发布:js设置readonly 编辑:程序博客网 时间:2024/06/05 15:37
loadView学习总结
[super loadView]的效果,就是产生了一个有效的view,也就是一个空白的view来保证view在使用时不为nil,但这并不是Cocoa的设计者所期望的。
loadView仅仅应该在开发者希望自行通过编码而不是Interface Builder定制view的时候被实现,而且不应该在其中调用[super loadView],你的loadView中应该有self.view = …这样的行为。
看两个例子:
例子1、
-(void) loadView {
//[super loadView];
NSLog(@"loadView Called");
}
- (void) viewDidLoad {
[super viewDidLoad];
UIButton *customButton = [UIButton buttonWith.....
......
[self.view addSubView:customButton];
}
当不使用IB来创建视图的时候,在viewDidLoad中使用view之前,系统会自动调用loadView来创建一个view,但例子1中的loadView除了打印一句话之外什么都没干,所以loadView会被不同的调用,但程序仍不能正常运行,因为没有有有效的view,self.view的值始终为nil。注意:我没有调用[super loadView],如果加上这句就可以了,这样会产生一个空白的view,但这不是苹果希望的。
例子2、
- (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 = …才是提倡的方式。
看了一些大侠的帖子,有这么说的:
{当view需要被展示而它却是nil时,viewController会调用该方法。不要直接调用该方法。
如果手工维护views,必须重载重写该方法
如果使用IB维护views,必须不能重载重写该方法}
开始时对上述感觉很迷惑,我想这不是他想表达的本意
self.view = [[[NSBundle mainBundle] loadNibNamed:@"OneNibName" owner:self options:nil] lastObject];
我想在loadView中这样用也是可以的,我是手工维护view,但view是从IB中加载的。
还有一点,和loadView一个界别的还有一个方法initWithNibName,这个方法是在controller中的类在IB中创建,但是通过Xcode实例化controller的时候用的.(建立一个viewBase的模板工程,然后打开MainWindow.xib,删除其中的viewController,然后回到viewController.m中,把第一个方法initWithNibName注释取消掉,然后加入一条你喜欢的打印语句,试试是不是这样的)
一般的用法是在loadView/initWithNibName里面创建基本的界面,然后在viewDidLoad里读入数据,然后根据数据再将各view设置为正确的状态。
上述为个人参考网上资料学习后的个人理解,有错误的地方还望飘过的大侠批评指正,在此谢过。
- loadView学习总结
- loadView学习总结
- loadView学习总结
- loadView学习总结
- 网上总结 loadView 和 viewDidLoad
- loadView / viewDidLoad / awakeFromNib / initWithCoder 总结
- loadView
- loadView
- loadView
- loadView
- iOS开发之loadView和viewDidLoad总结
- iOS开发-loadView和viewDidLoad总结
- loadView,viewDidLoad等几种方法的调用总结
- IOS -- ViewController的LoadView和ViewDidLoad方法相关知识总结
- IOS -- ViewController的LoadView和ViewDidLoad方法相关知识总结
- IOS -- ViewController的LoadView和ViewDidLoad方法相关知识总结
- IOS -- ViewController的LoadView和ViewDidLoad方法相关知识总结
- loadView Problem..
- 卡尔曼滤波原理说明
- iOS开发常用国外网站清单
- ZOJ 132月赛解题报告
- request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPat
- 实现接口的实现类,实现类方法调用
- loadView学习总结
- MySQL之数据库模型设计-1 第一范式、第二范式、第三范式理解
- MFC API——》AfxRegisterWndClass
- 如何在公司更好的立足
- ASIHTTPRequest 详解 例子
- 我的小情绪、小失落、小想念
- NYOJ--蚂蚁感冒(第五届蓝桥杯)
- 创建修改表语句
- User Interface(UI)之Layouts学习