用[super initWithStyle:UITableViewStyleGrouped]初始化UITableView



根据我对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在该点应该指向一个有效的对象。

最新更新