0

我有:
一个名为 Care 的类
,一个名为 masterCareList
masterView 的 NSMutableArray,detailView
careDataController 用于将 Cares 添加到 List 并计算对象的数量。

我想在 MasterView 中计算我的对象,我想在 detailView 中添加一个对象。在这两种情况下,都使用 careDataController(不倒带转场或在视图之间传递数据)和相同的 masterCareList。

如何以最佳(MVC)方式使用相同的 dataController 和相同的 NSMutable 数组?

4

1 回答 1

2

您可以在应用程序的初始设置中创建您的 careDataController,并通过 MasterView 的属性访问 careDataController。这将使您能够独立于视图控制器封装对数据的计数和其他操作。

一个非常高级的示例,您可以在其中创建 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 模型属性。

//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 回答