1

我有 NSTableView 和两列:

    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];

如您所见,列绑定到不同的 NSArrayController。第一列显示正确的值,但第二列只显示“(”符号。但如果我像这样交换列:

    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];

然后我看到第一列的值(在第一个示例中是第二列)和第二列中的“(”。我不明白这种行为。如何将两个数组控制器绑定到一个表?

4

1 回答 1

1

我发现,将多个控制器绑定到一个视图是不可能的。可能的解决方案是创建一个“代理”对象,该对象具有多个属性,然后将该对象与类似的键路径绑定

prop1.someRealProp prop2.someRealPropOfSecondObject

于 2009-12-13T13:40:15.927 回答