Я только недавно начал учиться использовать данные ядра в XCode 4, и у меня возникла очень странная проблема с загрузкой моего первого контроллера представления из делегата приложения в проектах основных данных. Я действительно не уверен, что я делаю неправильно, только то, что я делаю, работает очень хорошо, когда основные данные не реализованы, а не когда они есть.
Я обнаружил, что appDelegate загружается, а затем начинает загружать контроллер представления (я могу заставить его регистрировать, что он прошел через метод initWithNibName). Но затем контроллер представления исчезает, и все, что я вижу, - это главное окно. В журнале ошибок нет сгенерированных ошибок.
Вот соответствующий код из приложения Delegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// other code here
UINavigationController *navigationController = [[[UINavigationController alloc] init] autorelease];
HomeViewController *viewController = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil];
viewController.title = @"My Company";
[navigationController pushViewController:viewController animated:NO];
[window addSubview:navigationController.view];
[viewController release];
[self.window makeKeyAndVisible];
return YES;
}
В данный момент в контроллере представления есть только данные-заглушки, но я могу опубликовать любой из методов по запросу. Заранее благодарю за помощь.
ОБНОВЛЕНИЕ: Ну, я наконец-то заставил это работать самостоятельно, хотя я не уверен, почему это сработало. Все, что я сделал, это удалил контроллер навигации как свойство делегата приложения и выделил init, автоматически выпустив его в методе didFinishLaunchingWithOptions. После этого все заработало нормально. Код, размещенный выше, это то, что, наконец, сработало. Как ни странно, я попробовал то же самое в другом проекте, над которым я работаю, и он не сработал.
Вот код из второго проекта
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UINavigationController *navigationController = [[[UINavigationController alloc] init] autorelease];
StartViewController *viewController = [[StartViewController alloc] initWithNibName:@"StartViewController" bundle:nil];
[navigationController setNavigationBarHidden:YES];
[navigationController pushViewController:viewController animated:NO];
[window addSubview:navigationController.view];
[viewController release];
[self.window makeKeyAndVisible];
return YES;
}