#objective-c #cocoa-touch #ios #core-data #xcode4
#objective-c #cocoa-touch #iOS #core-data #xcode4
Вопрос:
Я только недавно начал учиться использовать core data в XCode 4, и у меня возникла очень странная проблема с загрузкой моего первого контроллера представления из делегата приложения в core data projects. Я действительно не уверен, что я делаю неправильно, только то, что то, что я делаю, работает очень хорошо, когда core data не реализован, но не тогда, когда это так.
Я обнаружил, что происходит то, что AppDelegate загрузится, а затем начнет загружать контроллер представления (я могу заставить его регистрировать, что он прошел через метод initWithNibName). Но затем контроллер представления исчезает, и все, что я вижу, это главное окно. В журнале ошибок нет ошибок, сгенерированных.
Вот соответствующий код из AppDelegate
- (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;
}
На данный момент в контроллере представления в основном есть только заглушки, но я могу опубликовать любой из методов по запросу. Заранее благодарю вас за вашу помощь.
ОБНОВЛЕНИЕ: Что ж, я наконец-то заставил это работать самостоятельно, хотя я не уверен, почему это сработало. Все, что я сделал, это удалил контроллер навигации как свойство делегата приложения и автоматически выпустил его при инициализации alloc в методе 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;
}
Ответ №1:
Попробуйте что-нибудь другое, подобное этому:
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
HomeViewController *viewController = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil];
viewController.title = "My Company";
[navigationController pushViewController:viewController animated:NO];
[viewController release];
[window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
return YES;
}
Комментарии:
1. @Carlton Smith: Вопрос! NavigationController где вы его определяете? связано ли это с
IBOutlet
?2. Если вы посмотрите на код, размещенный там сейчас, это то, над чем я, наконец, приступил к работе. Я не подключил навигационный контроллер к IBOutlet.