我在iOS7中有文档应用程序。我正在使用核心数据来管理每个文档中的数据,并使用导航查看控制器以编辑此文档。在文档编辑视图中,您可以找到许多带有颜色线或形状的元素,当我在颜色选择器中更改参数时,所有元素都需要更改。
为每个元素分配数据的最佳方法是什么?我应该使用委托,但这是多向调用。我应该使用单身人士吗?块?或者只是将所有元素指向一个颜色对象,但如何在XCode中执行此操作?
答案 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
枚举集合。
每个人都有权益和利益。