0

我设法在 NavigationController 中创建了一个 tableViewController(使用斯坦福大学的 CoreDataTableViewController),并通过 Core-Data 加载数据。用户可以检查一些参数,设置默认值等。它工作得很好,用户还可以将参数保存到数据库等等。

然而,这只是我正在构建的应用程序的一小部分。该应用程序以 TabBar 控制器开始。第一个选项卡包含一个 UIViewController,在这个视图中,我希望能够模态地对包含所有核心数据内容的 tableViewControllers 进行 segue。

我相信我在设置 AppDelegate、managedObjectContext 和其他所有内容时都非常小心。但是,显然我遗漏了一些东西,因为在尝试显示模态视图时出现以下错误:

[UINavigationController setManagedObjectContext:]: unrecognized selector sent to instance... 

我一直在搜索,这表明 managedObjectContext 没有被传递。

applicationDidFinishLaunching 上的代码是这样的:

  UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;

      RotationVC *rotation=[[tabBarController viewControllers] objectAtIndex:0];
      rotation.managedObjectContext=self.managedObjectContext;

并且第一个选项卡中包含的视图上的 prepareForSegue 是这样的:

if ([segue.identifier isEqualToString:@"SetCameraFromRotationSegue"])
    {

        CameraMakerTVC *cameraMaker = segue.destinationViewController;
        cameraMaker.managedObjectContext=self.managedObjectContext;

    }

它构建正常并且没有给出错误或警告。

任何人都可以帮我解决这个问题吗?我真的很感激!

提前致谢!

4

1 回答 1

0

问题可能出在此处:segue 中的“destinationViewController”不是 CameraMakerTVC(我猜它是表视图控制器),而是包含它的 UINavigationController。因此,当您尝试这样做时:

cameraMaker.managedObjectContext=self.managedObjectContext

事实上,您不是在尝试在 CameraMakerTVC 控制器上而是在 UINavigationController 上调用 setter。你应该尝试这样做:

UINavigationController *nc = segue.destinationViewController;
CameraMakerTVC *cameraMaker = [nc.viewControllers objectAtIndex:0];
cameraMaker.managedObjectContext=self.managedObjectContext;

于 2012-04-19T10:56:03.557 回答