rya*_*ott 136 iphone objective-c uiview ios
在iPhone应用程序中使用视图和视图控制器时,任何人都可以解释loadView和viewDidLoad之间的区别吗?
我个人的背景是,我从代码构建我的所有视图,我不会,也不会使用Interface Builder,如果这有任何区别.
我发现通常当我将初始化代码添加到loadView时,我最终会得到一个无限的堆栈跟踪,所以我通常在viewDidLoad中完成所有的子视图构建...但是每次执行时我都不清楚它,并且什么是更适合放置init代码的地方.什么是完美的,是一个简单的初始化调用图.
谢谢!
Mar*_*rco 200
我猜这可能是什么问题,因为我已经做到了:
我发现通常当我向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];
Run Code Online (Sandbox Code Playgroud)
而且我不会责怪你不使用IB.我已经坚持使用这种方法为所有Instapaper而且发现自己比处理IB的复杂性,界面怪癖和意外的幕后行为更加舒服.
Nil*_*ect 44
loadView是UIViewController实际加载视图并将其分配给view属性的方法.UIViewController如果您想以编程方式设置view属性,这也是将覆盖的子类的位置.
viewDidLoad是加载视图后调用的方法.在调用loadView之后调用它.在这里,您可以覆盖并插入代码,以便在加载视图后对视图进行进一步的初始设置.
ash*_*kdy 14
viewDidLoad()
Run Code Online (Sandbox Code Playgroud)
从NIB加载视图并希望在启动后执行任何自定义时使用
LoadView()
Run Code Online (Sandbox Code Playgroud)
要以编程方式创建视图时使用(不使用Interface Builder)
ala*_*dey 11
只需添加一些代码示例来演示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];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56737 次 |
| 最近记录: |