在init中创建UITableView失败

时间:2012-08-14 14:51:01

标签: ios

我在Xcode 4.3.2中尝试以下内容。我创建了一个单一的视图应用程序。我的ViewController实施UITableViewDelegateUITableViewDataSource

ViewController.m

UITableView *tv = [[UITableView alloc] initWithFrame:CGRectMake(0, 10, 120, 100)
                                               style:UITableViewStylePlain];
tv.delegate = self;
tv.dataSource = self;

[self.view addSubview:tv];   

我实施了numberOfSectionsInTableViewnumberOfRowsInSectioncellForRowAtIndexPathdidSelectRowAtIndexPath。它工作正常,并在两行中​​显示“欢迎”。 但是如果我将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;
}

1 个答案:

答案 0 :(得分:0)

两件事:

  • 如果您从xib文件或故事板加载,则使用的初始值设定项为initWithCoder:

  • 视图控制器的视图在需要之前不会加载,这意味着viewDidLoad:而不是任何init ...方法。 (但viewDidLoad:是由对view属性的引用触发的。)