0

私が持っている:
Care と呼ばれるクラス、
masterCareList masterView と呼ばれる
NSMutableArray、detailView
careDataController は、Cares を List に追加し、オブジェクトの数をカウントします。

MasterView でオブジェクトをカウントし、detailView にオブジェクトを追加したいと考えています。どちらの場合も、careDataController を使用して (セグエを巻き戻したり、ビュー間でデータを渡したりしないでください)、同じ masterCareList に接続します。

同じ dataController を使用して、同じ NSMutable 配列を最適な (MVC) 方法で使用するにはどうすればよいですか?

4

1 に答える 1

2

アプリの初期セットアップ時に careDataController を作成し、MasterView のプロパティを介して careDataController にアクセスできます。これにより、View Controller とは別に、データに対するカウントやその他の操作をカプセル化できます。

MasterViewを作成する場所の非常に高レベルの例...AppDelegate多分...

//Appdelegate.m file
MasterView *mv = [[MasterView alloc] init];
DataController *careDataController = [[DataController alloc] init];
mc.model = careDataController;  //model is a property within MasterView that you create

[self presentViewController:mv animated:YES completion:nil];

基本的に、MasterView で DetailView を作成し、作成したそのモデル プロパティを上記で設定した MasterViews モデル プロパティに設定した後、その DetailView を表示できます。

//some procedure in MasterView.m
DetailView *dv = [[DetailView alloc] init];
dv.model = self.model; //self.model you set above

[self presentViewController:dv animated:YES completion:nil];

DetailView に入ると、アプリの開始時に最初に作成した元の careDataController にケア オブジェクトを追加できます...

//somewhere in DetailView.m
Care *careObject = [[Care alloc] init];
[self.model addObject:careObject];

オブジェクトの追加が完了した後に DetailView を閉じると、MasterView の careDataController (モデル プロパティ) は、DetailView に追加した新しいケア オブジェクトを持ちます。

編集: 私はあなたの新しいコメントを見ました。本質的には、私が上に書いたものであり、間違っているとは思いません。上記のように渡す代わりに、MasterView を DetailView のデリゲートにすることもできます。Care オブジェクトを追加すると、そのオブジェクトの状態が DetailView に保存され、DetailView で定義したプロトコルを使用して返されます。MasterView が実装する以下のようなプロトコルにメソッドがあるかもしれません...

-(void)detailView:(DetailView *)dv didInsert:(Care*)careObject
{
    [self.model addObject:careObject];
}
于 2013-04-17T20:04:03.460 に答える