NSNotification/绑定?
Posted
技术标签:
【中文标题】NSNotification/绑定?【英文标题】:NSNotification/Bindings? 【发布时间】:2009-06-04 16:22:38 【问题描述】:我正在阅读希尔格拉斯和科昌的书籍。做我自己的实验以进一步学习我只是想创建一个带有 4 个文本字段的可可界面,其中 3 个接受数字,第 4 个显示其他 3 个的总和。我可以使用按钮来进行计算,但是我想要做的是在 3 个输入之一发生更改时让它自动更新。
我已经在书本和在线上寻找了涵盖这一点的课程,但找不到,所以要么它真的很简单,但我遗漏了一些东西,要么它不是那么简单。执行此操作的传统方式似乎是使用 NSNotifactions,但也可能使用绑定?
可可的标准做法是什么?有没有人知道的教程?
干杯, 摩根
【问题讨论】:
【参考方案1】:第7章:键值编码; Hilgrass 的“Cocoa Programming for Mac OS X”或Apple documentation on Key-Value Coding 的 Key-Value Observing 可以帮助您完成这项任务。
这是我的示例 xcode 项目:http://dl.getdropbox.com/u/344540/***/AutoAdd.zip。您可以通过使用 Inspector 的“Bindings”选项卡为 Interface Builder 中的 NSTextFields 控制更新的方式。该选项卡中还有其他宝石。
【讨论】:
感谢代码示例!非常感激。我会研究KVC的东西。干杯!摩根 @phi 正是我要找的,感谢代码示例。【参考方案2】:NSControl(因此是 NSTextField)有一个通知 NSControlTextDidChangeNotification,每当文本更改时都会发送该通知。
因此您可以在三个文本字段上注册该通知,然后更新您的计算字段。
我更进一步,创建了一个名为 ActionOnChangeTextField 的 NSTextField 子类,它会在文本更改时自动调用其操作。所以你只需将三个文本字段的类设置为 ActionOnChangeTextField 并将选择器连接到你的更新计算方法。
@interface ActionOnChangeTextField : NSTextField
@end
@implementation ActionOnChangeTextField
- (void) doTextChangedAction:(NSNotification*)notification;
[[self target] performSelector:[self action]];
- (void) awakeFromNib;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(doTextChangedAction:)
name:NSControlTextDidChangeNotification
object:self];
- (void) dealloc;
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
@end
【讨论】:
以上是关于NSNotification/绑定?的主要内容,如果未能解决你的问题,请参考以下文章