Как я понимаю, это правильно формирует Apple 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.tableView имеет значение null.
Я делаю что-то неправильно?
Я не использую интерфейсный конструктор!
Ответ :
Ян был действительно прав, я обнаружил, что процесс инициализации UITableViewController несколько отличается от обычного UIViewController.
Насколько я понимаю, при создании был вызван один из методов init, который будет завершен до вызова любых других методов (loadView, viewDidLoad). Это верно для UIViewController, но не для UITableViewController.
UITableViewController initWithStyle инициализатор фактически вызывает loadView и viewDidLoad как часть процесса инициализации. Свойство self.tableView устанавливается в loadView, но не в том случае, если вы переопределяете loadView, что я и сделал, и, следовательно, self.tableView не был установлен.