这是一个由多个视图组成的 Core Data 应用程序,每个视图都包含在自己的 Xib 中。在整个应用程序中,我有几个 NSPopupButton 显示来自各种核心数据实体的数据,绑定在界面生成器中以传统方式完成,并且一切正常。
除了两个弹出按钮,我必须以编程方式填充而不是绑定,因为数据需要一些处理才能显示在弹出窗口上。一个与我需要使用@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。但是,当源实体被修改或接收到新数据时,如何使这些弹出按钮自动更新?我只有在重新启动应用程序后才能看到更改。
或者,也许我错过了一些东西,并且首先可以通过界面构建器中的绑定来完成所有这些工作?
感谢您的建议。
=== 编辑以指定 [控制器重新排列对象] 无效。