当前位置:  开发笔记 > IOS > 正文

iPhone SDK:loadView和viewDidLoad有什么区别?

如何解决《iPhoneSDK:loadView和viewDidLoad有什么区别?》经验,为你挑选了4个好方法。

在iPhone应用程序中使用视图和视图控制器时,任何人都可以解释loadView和viewDidLoad之间的区别吗?

我个人的背景是,我从代码构建我的所有视图,我不会,也不会使用Interface Builder,如果这有任何区别.

我发现通常当我将初始化代码添加到loadView时,我最终会得到一个无限的堆栈跟踪,所以我通常在viewDidLoad中完成所有的子视图构建...但是每次执行时我都不清楚它,并且什么是更适合放置init代码的地方.什么是完美的,是一个简单的初始化调用图.

谢谢!



1> Marco..:

我猜这可能是什么问题,因为我已经做到了:

我发现通常当我向loadView添加init代码时,我最终得到了无限的堆栈跟踪

不要在-loadView中读取self.view.设置它,不要得到它.

如果当前未加载视图,则self.view 属性访问器调用 -loadView.你的无限递归.

在Apple的pre-Interface-Builder示例中演示的在-loadView中以编程方式构建视图的常用方法更像是:

UIView *view = [[UIView alloc] init...];
...
[view addSubview:whatever];
[view addSubview:whatever2];
...
self.view = view;
[view release];

而且我不会责怪你不使用IB.我已经坚持使用这种方法为所有Instapaper而且发现自己比处理IB的复杂性,界面怪癖和意外的幕后行为更加舒服.



2> NilObject..:

loadViewUIViewController实际加载视图并将其分配给view属性的方法.UIViewController如果您想以编程方式设置view属性,这也是将覆盖的子类的位置.

viewDidLoad是加载视图后调用的方法.在调用loadView之后调用它.在这里,您可以覆盖并插入代码,以便在加载视图后对视图进行进一步的初始设置.


比接受的答案更好的解释。

3> ashokdy..:
viewDidLoad()

从NIB加载视图并希望在启动后执行任何自定义时使用

LoadView()

要以编程方式创建视图时使用(不使用Interface Builder)



4> alamodey..:

只需添加一些代码示例来演示NilObject所说的内容:

- (void)loadView
{
    // create and configure the table view
    myTableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame] style:UITableViewStyleGrouped];   
    myTableView.delegate = self;
    myTableView.dataSource = self;
    myTableView.scrollEnabled = NO;
    self.view = myTableView;

    self.view.autoresizesSubviews = YES;
}

- (void)viewDidLoad 
{
  self.title = @"Create group";

  // Right menu bar button is to Save
  UIBarButtonItem *saveButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Save" style:UIBarButtonItemStyleDone target:self action:@selector(save)];
  self.navigationItem.rightBarButtonItem = saveButtonItem;
  [saveButtonItem release];
}


所以,在你们两个之间,是否准确地说loadView是我应该在我的控制器的self.view的alloc/init中进行的,并且应该在viewDidLoad(或更高版本)中处理子视图?
推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有