Приложение TabBar, сбой приложения, связанный с CoreData
В моем проекте я использую tabBarController в качестве контроллера rootView, затем на одной из моих вкладок добавляю свое существующее приложение ToDoList. Проблема у меня заключается в следующем: если я использую этот код в AppDelegate: ToDoList загружается как RootView. Но я хочу, чтобы он показывался только после выбора соответствующей вкладки.
- (void)applicationDidFinishLaunching:(UIApplication *)application {
//todoRootController.managedObjectContext = self.managedObjectContext;
ToDoRootViewController *todoRootViewController = [[ToDoRootViewController alloc]initWithNibName:@"ToDoRootViewController" bundle:nil];
NSManagedObjectContext *context = [self managedObjectContext];
if (!context) {
// Handle the error.
}
// Pass the managed object context to the view controller.
todoRootViewController.managedObjectContext = context;
UINavigationController *aNavigationController = [[UINavigationController alloc]
initWithRootViewController:todoRootViewController];
self.navigationController = aNavigationController;
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];
[todoRootViewController release];
[aNavigationController release];
}
Я заменяю метод приложения applicationDidFinishLaunching:(UIApplication *) в качестве примера кода CoreDataReceipeis.
- (void)applicationDidFinishLaunching:(UIApplication *)application {
todoRootController.managedObjectContext = self.managedObjectContext;
//////////////// same stuff
}
Но затем он выдает "NSInternalInconsistencyException", причина: "+entityForName: не удалось найти NSManagedObjectModel для имени объекта" Задача "
1 ответ
Используйте Interface Builder для установки контроллеров представления вкладок, которые будут отображаться при вводе вкладки.
Если вам нужно сделать это программно, вам следует ознакомиться с документацией для TabBarControllers.
из
- (void)applicationDidFinishLaunching:(UIApplication *)application {
tabBarController = [[UITabBarController alloc] init];
MyViewController* vc1 = [[MyViewController alloc] init];
MyOtherViewController* vc2 = [[MyOtherViewController alloc] init];
NSArray* controllers = [NSArray arrayWithObjects:vc1, vc2, nil];
tabBarController.viewControllers = controllers;
// Add the tab bar controller's current view as a subview of the window
[window addSubview:tabBarController.view];
}