根据我对Apple Api的正确理解,当用initWithStyle方法初始化UITableViewController时,它应该在self.tableView中返回一个对UITableView的引用。这是有意义的,因为一旦初始化,你就不能改变tableView的样式。
但在我的情况下,这不会发生。
- (id)initWithSomeData:(SomeData *)someData {
self = [super initWithStyle:UITableViewStyleGrouped];
if (self) {
}
NSLog(@"self? %@ tableView? %@", self, self.tableView);
return self;
}
这个display是self的对象ID,但是是self。tableView为空。我做错了什么吗?我没有使用界面构建器!
:Jan实际上是对的,我发现一个UITableViewController的初始化过程与一个普通的UIViewController有些不同。
我的理解是,在创建一个init方法被调用,并将完成之前任何其他方法(loadView, viewDidLoad)我们被调用。这对于UIViewController是正确的,但是对于UITableViewController不是。
UITableViewController initWithStyle初始化器实际上调用loadView和viewDidLoad作为它初始化过程的一部分。自我的属性。tableView在loadView中被设置,但如果你重写loadView就不会,我已经这么做了,然后是self。未设置tableView
tableView
对象可能是在稍后创建的。尝试重写:
-(void)viewDidLoad;
self.tableView
在该点应该指向一个有效的对象。