我在Xcode 4.3.2中尝试以下内容。我创建了一个单一的视图应用程序。我的ViewController
实施UITableViewDelegate
,UITableViewDataSource
。
在ViewController.m
:
UITableView *tv = [[UITableView alloc] initWithFrame:CGRectMake(0, 10, 120, 100)
style:UITableViewStylePlain];
tv.delegate = self;
tv.dataSource = self;
[self.view addSubview:tv];
我实施了numberOfSectionsInTableView
,numberOfRowsInSection
,cellForRowAtIndexPath
和didSelectRowAtIndexPath
。它工作正常,并在两行中显示“欢迎”。 但是如果我将UITableView
创建放在init中,那么它就无效了。
- (id)init
{
self = [super init];
if (self) {
UITableView *tv = [[UITableView alloc] initWithFrame:
CGRectMake(0, 10, 120, 100) style:UITableViewStylePlain];
tv.delegate = self;
tv.dataSource = self;
[self.view addSubview:tv];
}
return self;
}
答案 0 :(得分:0)
两件事:
如果您从xib文件或故事板加载,则使用的初始值设定项为initWithCoder:
。
视图控制器的视图在需要之前不会加载,这意味着viewDidLoad:
而不是任何init ...方法。 (但viewDidLoad:
是由对view
属性的引用触发的。)