【发布时间】:2010-03-17 13:17:28
【问题描述】:
我认为我有一个NSTextField。它的值绑定到我的控制器中的NSNumber *number。控制器只需调用模型 (value) 即可获取适当的值。
// In the controller
- (NSNumber *)number {
return [NSNumber numberWithFloat:[model value]];
}
- (void)setNumber:(NSNumber *)aNumber {
[model setValue:[aNumber floatValue]];
}
这很好,只有控制器不会收到模型更改通知,因此,更改模型中的值不会更新 NSTextField。
我能想到的唯一其他选择是让模型通知控制器,控制器通过 Outlet 手动更新视图。但这绕过了绑定。
// In the model, after value change
[[NSNotificationCenter defaultCenter] postNotificationName:@"ValueChanged" object:self];
// In the controller, after being notified
- (void)updateView:(NSNotification *)aNotification {
[myTextField setFloatValue:[model value]];
}
有没有更好的绑定感知方式来实现这种通信?
【问题讨论】:
标签: objective-c cocoa model-view-controller binding