簡體   English   中英

如何將NSManagedObjectContext傳遞回UINavigationController中的根視圖?

[英]How to pass NSManagedObjectContext back up to root view in UINavigationController?

我可能只是在視圖之間傳遞數據,這在這里是完全錯誤的,因此我願意完全改變我來回傳遞數據的方式。

我的應用程序委托創建了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];

你為什么要寄回去? 您的根視圖控制器尚未-dealloc ,因此它仍然存在於內存中,並且仍然具有對NSManagedObjectContext的引用。 沒有什么可以回傳的。

您得到的錯誤與核心數據無關。 在調試器中運行它,並在objc_exception_throw上設置一個斷點,然后查看崩潰的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM