Приложение TabBar, сбой приложения, связанный с CoreData - PullRequest
1 голос
/ 03 июня 2011

В моем проекте я использую 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 Ответ

0 голосов
/ 03 июня 2011

Использование 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];

} 
...