您可以在应用程序的初始设置中创建您的 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];
}