【发布时间】:2010-08-02 14:47:38
【问题描述】:
我可能只是在这里完全错误地在视图之间传递数据,所以我愿意完全改变我来回传递数据的方式。
我的应用程序委托创建 NSManagedObjectContext 并使用 UINavigationController 将其传递到我的主菜单,使其成为根视图:
MainMenuViewController *mainMenuViewController = [[MainMenuViewController alloc] init];
NSManagedObjectContext *context = [self managedObjectContext];
if (!context) {
// Handle the error.
}
// Pass the managed object context to the view controller.
mainMenuViewController.managedObjectContext = context;
UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:mainMenuViewController];
self.theNavController = aNavigationController;
[[self theNavController] setNavigationBarHidden:YES animated:NO];
[window addSubview:theNavController.view];
[window makeKeyAndVisible];
[mainMenuViewController release];
[aNavigationController release];
然后当他们从主菜单中选择不同的视图控制器时,我初始化新的视图控制器,将 NSManagedObjectContext 传递给它,然后将其推送到 UINavigationController:
BombsViewController *bombsViewController = [[BombsViewController alloc] init];
bombsViewController.managedObjectContext = self.managedObjectContext;
[self.navigationController pushViewController:bombsViewController animated:YES];
[bombsViewController release];
一切都很好,直到我决定从 BombsViewController 返回主菜单。我正在尝试使用以下内容将根视图控制器弹出回 UINavigationController:
[self.navigationController popToRootViewControllerAnimated:YES];
但是,由于 popToRootViewControllerAnimated 方法不接受视图,因此我看不到将我的 NSManagedObjectContext 发送回根视图控制器的方法。我尝试使用 popToViewController:animated: 方法,但随后应用程序崩溃,并出现“在抛出 'NSException' 实例后调用终止”、“程序收到信号:“SIGABRT”。强>”:
MainMenuViewController *mainMenuViewController = [[MainMenuViewController alloc] init];
mainMenuViewController.managedObjectContext = self.managedObjectContext;
[self.navigationController popToViewController:mainMenuViewController animated:YES];
[mainMenuViewController release];
【问题讨论】:
标签: iphone core-data delegates uinavigationcontroller