如何将相同数据发送到不同视图或视图控制器中的多个对象?

时间:2014-01-30 07:36:21

标签: ios oop

我在iOS7中有文档应用程序。我正在使用核心数据来管理每个文档中的数据,并使用导航查看控制器以编辑此文档。在文档编辑视图中,您可以找到许多带有颜色线或形状的元素,当我在颜色选择器中更改参数时,所有元素都需要更改。

为每个元素分配数据的最佳方法是什么?我应该使用委托,但这是多向调用。我应该使用单身人士吗?块?或者只是将所有元素指向一个颜色对象,但如何在XCode中执行此操作?

2 个答案:

答案 0 :(得分:2)

如果这些视图是自定义对象,请使用NSNotificationCenter 创建通知并将所有其他视图设置为此通知的观察者。当您在字典中触发通知设置颜色值,并且所有观察者(视图)都获取此字典。

现在,在选择器方法中相应地更改颜色值。

代码 - >
对于要更改颜色的所有视图,将它们添加为通知名称“changeColor”的观察者

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(colorChange:) name:@"changeColor" object:nil];

要在所有视图中将颜色值更改为特定颜色,请触发通知

[[NSNotificationCenter defaultCenter] postNotificationName:@"changeColor" object:nil userInfo:@{@"finalColor": [UIColor redColor}];

这导致在所有观察者中调用SEL(colorChange)

-(void)colorChange{
   NSDictionary *userInfo =notification.userInfo;
   view.backgroundColor =userInfo[@"finalColor"];
}

删除dealloc中的观察者,

-(void)dealloc{
   [[NSNotificationCenter defaultCenter] removeObserver:self];
}

答案 1 :(得分:0)

你有很多选择。这里有几个。

NSNotification

KVO(键值观察)

IBOutletCollection

枚举集合。

每个人都有权益和利益。