NSTableView со столбцами, привязанными к различным NSArrayControllers - PullRequest
1 голос
/ 30 августа 2009

У меня есть 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];

Как видите, столбцы привязаны к разным 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];

тогда я вижу значения первого столбца (который был вторым в первом примере) и снова "(" во втором столбце. Я не понимаю такого поведения. Как я могу связать два контроллера массива с одной таблицей?

1 Ответ

1 голос
/ 13 декабря 2009

Как я выяснил, привязка нескольких контроллеров к одному представлению невозможна. Возможное решение - создать объект «прокси», который имеет несколько свойств, а затем связать этот объект с помощью ключевого пути, например

prop1.someRealProp prop2.someRealPropOfSecondObject

...