Cocoa自动更新NSTextField中的字典值

时间:2011-03-31 00:06:25

标签: objective-c cocoa nsdictionary nstextfield

现在,我的界面中有一个包含字符串值和NSTextField的字典。但是,为了更新此值,我必须单击一个按钮,然后运行更新代码。如何在文本字段的值发生变化时动态更新它?

1 个答案:

答案 0 :(得分:2)

使用Cocoa Bindings

它们旨在使您的视图(NSTextField)与您的模型(字典)保持同步,而无需在其间编写所有粘合代码。他们学习起来有点棘手,但一旦你了解它们,它们就非常有用。

在您的情况下,您将NSTextField的“value”绑定绑定到代码中的属性。

另一种方法是设置NSTextFieldDelegate并实现:

- (void)controlTextDidChange:(NSNotification *)aNotification

修改字典中的值。例如,

- (void)controlTextDidChange:(NSNotification *)aNotification {
   [myDictionary setValue:[myTextField stringValue] forKey:@"MYDictionaryKey"];
}

现在,只要用户修改NSTextField中的文本,文本字段就会将此回调触发到其委托。这样,您可以确保字典始终具有与屏幕上显示的值相同的值。

如果您只希望更改在用户完成编辑后生效,则执行:

- (void)controlTextDidEndEditing:(NSNotification *)aNotification