正如我理解這正確地形成Apple Api,使用initWithStyle方法初始化UITableViewController時,它應該返回一個對self.tableView中的UITableView的引用。這是有道理的,因爲你無法在初始化後改變tableView的風格。用[super initWithStyle:UITableViewStyleGrouped]初始化UITableViewController
但在我的情況下,這不會發生。
- (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有些不同。
我的理解是,在創建時,init方法中的一個被調用,並且會在調用任何其他方法(loadView,viewDidLoad)之前完成。這對於UIViewController是正確的,但對於UITableViewController不適用。
UITableViewController initWithStyle初始化程序實際上調用loadView和viewDidLoad作爲其初始化過程的一部分。 self.tableView的屬性是在loadView中設置的,但是如果您重寫了loadView,那麼我不這麼做,因此self.tableView沒有被設置。
這是一個很好的idee Jan,不幸的是,行NSLog(@「tableView?%@」,self.tableView);當作爲LoadView中的第一行放置時,導致我的應用程序崩潰。並且在放置在viewDidLoad中時也會返回null null – DIJ 2011-04-11 12:21:53
這很奇怪,在其他地方一定有錯誤,你可以發佈整個類嗎? – 2011-04-11 12:40:54
我真的發現了這個問題,想把它作爲我自己的問題的答案發布,但這不允許在24小時內爲新用戶...奇怪。 – DIJ 2011-04-11 12:50:20