这是一个由多个视图组成的核心数据应用程序,每个视图都包含在自己的Xib中。在整个应用程序中,我有几个NSPopupButton显示来自各种Core Data实体的数据,绑定在接口构建器中以传统方式完成,并且一切正常。
除了两个弹出按钮,我必须以编程方式填充而不是绑定,因为数据在弹出窗口显示之前需要一些处理。一个涉及我需要使用@distinctUNionOfObjects的实体。另一个涉及一个十进制数字的实体,需要进行自定义数字格式化,以便显示为百分比(百分号)。
为了填充这两个弹出窗口,我在awakeFromNib中为相关视图生成了数据数组。这是代码:
- (id)init {
self = [super initWithNibName:@"xib_name" bundle:nil];
if (!self) {
return nil;
}
[self setTitle:@"view_title"];
return self;
}
- (void)awakeFromNib {
// fetch request on entity
// data treatment and creation of an array with the result
[popupButton addItemsWithTitles:array];
}
很好,但是当我向这些实体添加数据时(通过应用程序的其他视图上的表格或文本字段),然后使用弹出窗口返回视图,按钮不会使用新内容进行更新。我理解,这是因为内容是在awakeFromNib中创建的,并且再次显示相关视图不会重新唤醒Nib。但是,当源实体被修改或接收新数据时,如何使这些弹出按钮自动更新?只有在重新启动应用程序后才能看到更改。
或者我可能错过了一些东西,并且首先可以通过界面构建器中的绑定来完成所有这些操作吗?
感谢您的建议。
===编辑以指定[controller rearrangeObjects]无效。