Objective c 如何以编程方式刷新NSPoupButton的菜单?

Objective c 如何以编程方式刷新NSPoupButton的菜单?,objective-c,cocoa,nspopupbutton,Objective C,Cocoa,Nspopupbutton,这是一个由多个视图组成的核心数据应用程序,每个视图都包含在自己的Xib中。在整个应用程序中,我有几个NSPopupButton显示来自各种核心数据实体的数据,绑定是在interface builder中以传统方式完成的,所有这些都很好地工作 除了两个弹出按钮,我必须通过编程而不是绑定来填充它们,因为数据在显示在弹出窗口之前需要进行一些处理。其中一个与我需要使用@distinctUNionOfObjects的实体相关。另一个涉及十进制数的实体,需要进行自定义的数字格式设置,以便将其显示为百分比(带

这是一个由多个视图组成的核心数据应用程序,每个视图都包含在自己的Xib中。在整个应用程序中,我有几个NSPopupButton显示来自各种核心数据实体的数据,绑定是在interface builder中以传统方式完成的,所有这些都很好地工作

除了两个弹出按钮,我必须通过编程而不是绑定来填充它们,因为数据在显示在弹出窗口之前需要进行一些处理。其中一个与我需要使用@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。但是,当源实体被修改或接收到新数据时,如何使这些弹出按钮自动更新?我只在重新启动应用程序后才看到更改

或者可能我遗漏了什么,而首先可以通过interface builder中的绑定来完成所有这些

谢谢你的建议

==编辑以指定[控制器对象]无效