私が理解できないのは、管理対象オブジェクト コンテキスト (およびその他のオブジェクト) を UITableView サブビューに渡す方法です。
まず、管理オブジェクト コンテキストをテーブルのサブビューに渡す必要はありません。UITableView は、そのデータ ソースと対話することによって、セルにデータを取り込みます。テーブルは、表示されるデータについて何も知りません。テーブルのサブビューはそのセルであり、それらはデータ ソースから取得されます。ほとんどの場合、View Controller はテーブルのデータ ソースおよびデリゲートとして機能します。管理対象オブジェクトのコンテキストについて知る必要がある場合、それはデータ ソースであり、通常は View Controller です。
MOC をテーブル セルまたは他のサブビューに渡す必要があるかどうかの問題はさておき、その方法について説明しましょう。あるオブジェクトが別のオブジェクトと直接通信するには、最初のオブジェクトが 2 番目のオブジェクトへのポインターを必要とします。オブジェクトへのポインタがあれば、そのオブジェクトに好きなメッセージを送ることができます (ただし、オブジェクトがそのメソッドを実装している場合は大いに役立ちます!)。ですから、最初の仕事は、話したいビューを見つけることです。
テーブル間のドラッグ アンド ドロップの実装について話しているので、問題のサブビューはテーブル セルであり、ドロップ操作にはタッチが終了するセルの変更が含まれると推測します。最初に終点をテーブルのローカル座標に変換し、次にテーブルの-indexPathForRowAtPoint:
メソッドを使用することで、タッチが終了するテーブル セルを取得できます。行のインデックス パスを取得したら、 を介して対応するセルを取得できます-cellForRowAtIndexPath:
。セルへのポインターを使用して、任意のパラメーターを渡すメッセージをセルに送信できます。
最後に、このアプローチを採用する場合は、おそらく管理オブジェクト コンテキスト自体を渡す必要はありません。ドラッグによって表されるデータは、管理オブジェクトcontextではなく管理オブジェクトになる可能性が高いため、おそらく渡したいのは管理オブジェクトです。コンテキストは、多数の管理対象オブジェクトのコンテナーであり、すべての管理対象オブジェクトには、それが存在するコンテキストへの参照があるため、コンテキストを個別に渡す必要はありません。