0

Core-Data を介してロードされたデータを使用して、(スタンフォード大学の CoreDataTableViewController を使用して) NavigationController 内に tableViewController を作成することができました。ユーザーは、いくつかのパラメーターを確認したり、デフォルトを設定したりできます。これは非常にうまく機能し、ユーザーはパラメーターを DB などに保存することもできます。

ただし、これは私が構築しているアプリのほんの一部です。アプリは TabBar コントローラーで開始します。最初のタブには UIViewController が含まれており、このビュー内で、すべてのコアデータを含む tableViewControllers をモーダルにセグエできるようにしたいと考えています。

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;

    }

それはOKを構築し、エラーも警告も出しません。

誰か私に手を貸してくれませんか?本当に感謝します!

前もって感謝します!

4

1 に答える 1

0

おそらく問題はここにあります。セグエの「destinationViewController」はCameraMakerTVC(テーブルビューコントローラーだと思います)ではなく、それを含むUINavigationControllerです。したがって、これを実行しようとすると:

cameraMaker.managedObjectContext=self.managedObjectContext

実際、CameraMakerTVC コントローラーではなく UINavigationController でセッターを呼び出そうとしています。これを行う必要があります:

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

于 2012-04-19T10:56:03.557 に答える