我在NSComboBox
元素和NSArrayController
之间存在绑定问题。
所有绑定都在IB中设置。
NSComboBox
元素具有以下绑定:
NSArrayController
个实例,键:arrangedObjects
NSArrayController
实例,键:arrangedObjects.name
NSArrayController
元素以下列方式绑定:
File's Owner
,关键路径为:availableProperties
(NSMutableArray
在代码中,我有一个方法,当窗口打开时和一些事件触发后调用。
代码如下:
NSMutableArray* newAvailable = ...; //compute the new properties to be displayed.
//now I want to replace all the properties with the new one
if ([self.availableProperties count] > 0)
[self.availablePropertiesController removeObjects:self.availableProperties];
[self.availablePropertiesController addObjects:newAvailables];
其中self.availableProperties
是NSMutableArray
(模型)而self.availablePropertiesController
是NSArrayController
当窗口打开时,组合框已正确填充。 但是当事件触发时我执行上面的语句,我可以看到正确填充后备数组,但组合框是完全空的。
一些想法?
答案 0 :(得分:0)
你很接近,你应该这样做:
NSMutableArray* newAvailable = ...; //compute the new properties to be displayed.
self.availableProperties = newAvailable;
您已将arrayController绑定到'availableProperties'变量,因此更改UI所需要做的就是更改变量。这就是绑定之美。
另外,你的'availableProperties'可能应该是NSArray,而不是NSMutableArray,因为如果你不小心在NSMutableArray的中间插入了一个对象,那么arrayController的绑定就不会注意到 - 它只会注意到整个'availableProperties'实例变量发生了变化,而不是变异内部的变化。