質問

わかりました。これは挑戦です。

Navigation Controller内にTableViewがあります。

ルートからプッシュします。ここには、新しいレコードを追加できる追加アクションがあります。うまくいきます。

今私がやろうとしているのは、このtableviewをTab Barビューに追加することです(Tab Bar Controllerは動作しません)が、同じNavigation Controller内にあります。

だから私がやりたいのはこれです:ルート> TabBarView(Tableviewをロード)>新しいレコードを追加します。

問題は管理対象オブジェクトのコンテキストにあり、「エンティティエラーが見つかりません」という全体が表示されます。修正方法がわかりません。

AddRecordモーダルビューコントローラーを取得してtabBarViewから表示することができましたが、ナビゲーションバーなしで表示されますが、単独のtableView(tabbarの外側)にレコードを追加しようとしても問題ありません。

TabBarViewのnavigationBarbuttonsからメソッドを呼び出し、tableviewsメソッドにルーティングします。

メソッドは実際のテーブルビューの代わりにtabBarViewから呼び出す必要があり、実際に呼び出されることは知っていますが、tabViewでMOCを管理する方法はわかりません。

ああ、これはコアデータのレシピと本に基づいているので、add recordメソッドが起動されると、新しいMOCを作成して作成し、完了したらメインMOCに再統合します。

アイデアはありますか

役に立ちましたか?

解決

いくつかの問題があるようです。

  1. "エンティティが見つかりません"エラー-これは、使用している管理オブジェクトコンテキストによって異なります。編集中のオブジェクトを管理するために別のMOCを作成した場合(これは良いアイデアです)、必ず永続ストアコーディネーターを割り当ててください。これは、MOCがどのオブジェクトが利用可能であるかを発見する方法です。アプリデリゲートで作成されたMOCを使用している場合は、エンティティの名前のスペルが正しいことを確認してください。
  2. シートにナビゲーションバーがありません-View ControllerをNavigation Controllerにプッシュすると、その navigationItem を使用してNavigation Barにデータが入力されます。 View Controllerをシートとして表示すると、View Controllerのみが表示されます。 Navigation Controllerに組み込まれていません。ナビゲーション項目を表示するには、View Controllerをルートとして新しいNavigation Controllerを作成し、Navigation Controllerのビューを表示する必要があります。

他のヒント

メインのMOCに関する限り、ビューとコントローラーは無関係である必要があります。使用しているコントローラーでMOCへの参照を取得し、そのMOCで操作します。アプリケーションデリゲートがメインMOCを作成する場合、それをそのデリゲートのプロパティにし、ビューまたはTabコントローラからアクセスします。

あなたが抱えているナビゲーションの問題にはあまり従いませんが、必要なときにナビゲーションバーがない場合は、UIViewControllerサブクラスを追加する場所にUINavigationControllerを作成して追加する必要があると思います。サブクラスを新しいUINavigationControllerのルートにし、コントローラーをタブなどに配置します。

管理オブジェクトコンテキスト(MOC)は、ナビゲーションやビューに依存しないようにしてください。それはモデルの一部です。 (ご存じのとおり、キャンセル可能な編集ビューの2番目のMOCは、エディターで使用するために作成した範囲までナビゲーションに依存します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top