2012-08-14 68 views
0

我在Xcode 4.3.2中尝试以下操作。我创建了一个单一的视图应用程序。我的ViewController执行UITableViewDelegate,UITableViewDataSource在init中创建UITableView失败

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; 
} 
+0

我想,那是因为你的观点没有被加载。它仍然处于初始化模式,所以自己不知道它自己的tableview或其他子视图。 – Mrunal 2013-06-07 14:01:37

回答

0

两件事情:

  • ,如果你从一个XIB文件或情节串连图板装载,所使用的初始化是initWithCoder:

  • 视图控制器的视图直到需要时才加载,这意味着viewDidLoad:而不是任何init ...方法。 (虽然,viewDidLoad:通过向view属性的引用触发。)