2

UITableViewfromにセルを入力しCoreDataていますが、必要なデータを自分に転送する最善の方法について質問がありますDetailController(つまりviewController、セルがタップされたときに表示されます)。

現在、UITableViewCells を入力するときindexPathは、セルに渡されたを使用してmanagedObject、コア データから適切なものを取得します。この段階では、管理対象オブジェクトからのいくつかの情報 (名前、年齢、性別など) でセルを更新するだけです。

が完全に入力された後、UITableViewユーザーが を選択して、UITableViewCellよりDetailController詳細な情報 (名前、年齢、性別、職業、体重、身長など) を表示できるようにし-prepareForSegueたいと考えています。新たに提示されDetailControllerた。

私の質問:

セグエの「送信者」はUITableViewCell(サブクラス) ですが、最初に小さいセルに表示するために必要な情報のみを入力しました。するべきか

  1. サブクラスにさらに iVar を追加し、UITableViewCell必要なすべてのデータを保存します。
  2. モデルへのセルにポインターiVarを保持しますmanagedObject
  3. 私が見逃したかもしれない何か他のものはありますか?
4

1 に答える 1

5

Objective-c で使用するModel View Controllerパターンを使用すると、ビューはデータ モデルについて決して認識してはなりません。これはUITableViewCell、データ モデルのオブジェクトを格納するプロパティを に含めないことを意味します。セルには、View Controller が-tableView:cellForRowAtIndexPathメソッドなどでモデルからのデータを入力するプロパティとして、ラベルとビューのみを含める必要があります。

UITableViewCellセグエの準備で送信者としてオブジェクトを取得します。次の方法で、セルのインデックス パスを見つけることができます。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    NSIndexPath * selectedIndexPath = [self.tableView indexPathForCell:sender];
    ...

次に、このインデックス パスを使用して、モデル オブジェクトをコア データから再度引き出し、次のビュー コントローラーのプロパティとして設定するか、モデル オブジェクトを転送するために必要なことを行うことができます。

于 2013-03-13T17:13:51.920 に答える