У меня есть контроллер представления, который инициализирует два других контроллера представления. Представление для одного контроллера не показывалось, и я отследил проблему, когда экземпляр был добавлен в супер-представление.
Вот код. viewDidLoad вызывается до инициализации FavoritesTableVC. Это можно увидеть, разместив точки останова в методах инициализации контроллеров представления результатов resultsTableVC и FavoritesTableVC.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
resultsTableVC = [[[ResultsTableVC alloc] initWithController:self andTableView:nil] retain];
favoritesTableVC = [[[FavoritesTableVC alloc] initWithFrame:CGRectMake(0, 10, self.view.frame.size.width, defaultFavoritesTableHeight) andController:self] retain];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self.view addSubview:resultsTableVC.view];
[resultsTableVC release];
[self.view addSubview:favoritesTableVC.view];
[favoritesTableVC release];
}
Вот порядок вызова методов:
- allResults init
- resultsTableVC init
- allResults viewDidLoad
- addSubview allResultsVC
- добавитьПоделиться в избранномРезультатыVC
- избранноеРезультатыVC init
Это один поток, поэтому я не понимаю, как viewDidLoad может быть вызван до завершения init.