Elton's Blog

Tag: loadView

loadView vs viewDidLoad

by on 十一.30, 2009, under iPhone

iPhone开发必不可少的要用到这两个方法。 他们都可以用来在视图载入的时候,初始化一些内容。 但是他们有什么区别呢?

viewDidLoad 此方法只有当view从nib文件初始化的时候才被调用。

loadView 此方法在控制器的view为nil的时候被调用。 此方法用于以编程的方式创建view的时候用到。 如:

1
2
3
4
5
6
7
- (void)loadView {
    UIView *view = [[UIView alloc] initWithFrame:[UIScreen
mainScreen].applicationFrame];
    [view setBackgroundColor:_color];
    self.view = view;
    [view release];
}

你在控制器中实现了loadView方法,那么你可能会在应用运行的某个时候被内存管理控制调用。 如果设备内存不足的时候, view 控制器会收到didReceiveMemoryWarning的消息。 默认的实现是检查当前控制器的view是否在使用。 如果它的view不在当前正在使用的view hierarchy里面,且你的控制器实现了loadView方法,那么这个view将被release, loadView方法将被再次调用来创建一个新的view。

5 Comments :, more...

loadView时候的注意事项

by on 十一.17, 2009, under iPhone

loadView是使用代码生成视图的时候,当视图第一次载入的时候调用的方法。

今天写一个Navigation Controller,给它加一个继承了TableViewController的View作为Navigation Controller的Root View

1
2
3
4
5
UITableViewController *tableViewController = [[TableViewController alloc] init];
 
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController: tableViewController];
nav.navigationBar.barStyle = UIBarStyleBlack;
[self.view addSubview:nav.view];

一切都很顺利成章,但是运行的时候,除了显示一个NavigationBar以外,表格并没有显示出来。 反复查找原因都为果。 后来仔细对比之前的代码,原来是tablebView中的loadView方法少写了下面这行代码:

1
[super loadView];

后来查了文档,说的很清楚,自己的类里面的loadView一定要第一行加上[super loadView]这句话。 看来以后还是要多注意细节。

1 Comment :, , , more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Visit my friends!

A few highly recommended friends...