使用初始化UITableViewController

据我了解这正确forms的苹果Api,当初始化一个UITableViewController与initWithStyle方法,它应该返回给我一个UITableView在self.tableView引用。 这是有道理的,因为一旦初始化你不能改变tableView的样式。

但在我的情况下,这不会发生。

- (id)initWithSomeData:(SomeData *)someData { self = [super initWithStyle:UITableViewStyleGrouped]; if (self) { } NSLog(@"self? %@ tableView? %@", self, self.tableView); return self; } 

这个显示是self的一个对象ID,但self.tableView是null。 难道我做错了什么? 我不使用接口生成器!

:Jan实际上是对的,我发现UITableViewController的初始化过程与普通的UIViewController有所不同。

我的理解是,在创build一个init方法时被调用,并会在调用任何其他方法(loadView,viewDidLoad)之前完成。 这对于UIViewController来说是正确的,但对于UITableViewController来说是不正确的。

UITableViewController initWithStyle初始化器实际上调用loadView和viewDidLoad作为其初始化过程的一部分。 self.tableView的属性是在loadView中设置的,但是如果你重写了loadView,那么我不这么做,因此self.tableView没有被设置。

tableView对象可能是在稍后创build的。 尝试覆盖:

 -(void)viewDidLoad; 

self.tableView应该指向那个点上的有效对象。