2009-08-30 60 views
1

我有NSTableView的两列在里面:NSTableView的绑定到不同的NSArrayControllers列

NSTableColumn *column = [[[NSTableColumn alloc] initWithIdentifier:@"custId"] autorelease]; 
[column bind:@"value" toObject:arrC2 withKeyPath:@"arrangedObjects.custId" options:nil]; 
[table addTableColumn:column]; 

column = [[[NSTableColumn alloc] initWithIdentifier:@"totalGrams"] autorelease]; 
[column bind:@"value" toObject:valuationArrC withKeyPath:@"arrangedObjects.totalGrams_double" options:nil]; 
[table addTableColumn:column]; 

,你可以看到,列绑定到不同的NSArrayControllers。第一列显示正确的值,但第二只示出了“(”符号,但如果我换列是这样的:

NSTableColumn *column = [[[NSTableColumn alloc] initWithIdentifier:@"totalGrams"] autorelease]; 
[column bind:@"value" toObject:valuationArrC withKeyPath:@"arrangedObjects.totalGrams_double" options:nil]; 
[table addTableColumn:column]; 
column = [[[NSTableColumn alloc] initWithIdentifier:@"custId"] autorelease]; 
[column bind:@"value" toObject:arrC2 withKeyPath:@"arrangedObjects.custId" options:nil]; 
[table addTableColumn:column]; 

然后我看到第一列的值(这是第二位的第一个例子),并再次“( “在第二列中。我不理解该行为。我怎样才能结合2个阵列控制器到一个表?

回答

1

如我发现,几个控制器结合一种观点是不可能的。可能的解决方案是创建一个“代理”对象,它具有多个属性,然后将此对象与类似于以下路径的关键字绑定:

prop1.someRealProp prop2.someRealPropOfSecondObject