我希望能够使用绑定来使我的 GUI 与动态加载的对象保持同步,但是一旦我用另一个相同类型的对象替换有问题的对象,绑定就会中断并且 GUI 停止更新。这里有一些代码可以帮助你理解我的意思:
在我的界面中,我有一个实例变量来保存有问题的对象:
@interface AppDelegate : NSObject {
CustomObject *anObject; // This object has a "NSString *textValue" property
}
然后在我的实现中实例化对象:
- (id) init {
self = [super init];
if (self != nil) {
anObject = [[CustomObject alloc] init];
}
return self;
}
在 Interface Builder 中,我将文本字段的“值”绑定到“anObject.textValue”。
当我调用此方法时:
[anObject setValue:@"Changed anObject.textValue!" forKey:@"textValue"];
然后文本字段更新以反映新值。
但是我想要做的是显示在应用程序的其他地方做一些工作后给出的对象的值。所以我做的是这样的:
- (void)setCustomObject:(CustomObject *)newObject {
anObject = newObject;
}
现在这个操作的结果似乎打破了从 GUI 到 CustomObject 实例 (anObject) 的绑定,考虑到绑定的对象已被另一个实例替换,这似乎是合乎逻辑的。
我想知道的是,是否有一种方法可以使绑定与动态创建的 CustomObject 实例保持功能,而不必以编程方式重新绑定每个控件bind:toObject:forKeyPath:options:
或类似的方法,这将需要(据我所知)使用 IBOutlets 来获得握住控件然后能够将它们绑定到我的新对象中的值(IMO这将使绑定在我的情况下无用)。这是唯一的解决方案还是有更好、更清洁的方法来处理这个问题?
我在developper.apple.com 和其他地方阅读了很多关于绑定的文档,但我没有找到任何似乎谈论这个特殊情况的东西。
在此先感谢您的时间!