我正在开发基于CoreData / Document的应用。在UI的一个区域中,我设置了一个包含各种列的视图模式表。一列中有一个NSPopupButton,其中Selected Index绑定设置为Table Cell View.objectValue.startupState。
选中弹出窗口中的任何菜单项将正确更新实体上的startupState属性,并单击菜单项的索引并同时更新NSPopupButton文本。我已经验证了属性值实际上是通过保存,关闭和重新打开文档来更新的。
在另一列中,我有一个NSPopupButton绑定类似于同一实体中的另一个属性 - Table Cell View.objectValue.mode。根据模式选择,它将通过setMode的手动实现修改startupState值,setMode在某些情况下执行此语句:
[self setValue:[[NSNumber alloc] initWithInt:1] forKey:@"startupState"];
我遇到的问题是NSPopupButton没有更新以显示所选索引的菜单项文本。和以前一样,在上面的代码运行并且选择了正确的项目/文本后,我保存,关闭并重新打开文档,所以我知道setValue调用更新了属性。
有什么想法吗?
答案 0 :(得分:0)
正如评论中所提到的,Volker的建议解决了这个问题。围绕setValue:forKey调用需要willChangeValueForKey和didChangeValueForKey消息:
[self willChangeValueForKey:@"startupState"];
[self setValue:[[NSNumber alloc] initWithInt:1] forKey:@"startupState"];
[self didChangeValueForKey:@"startupState"];