1

NSTableViewと2つの列があります。

    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にバインドされています。最初の列には正しい値が表示されますが、2番目の列には「(」記号が表示されます。ただし、次のように列を入れ替えると、次のようになります。

    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番目)の値が表示され、2番目の列に「(」が表示されます。その動作がわかりません。2つのアレイコントローラーを1つのテーブルにバインドするにはどうすればよいですか?

4

1 に答える 1

1

私が知ったように、複数のコントローラーを1つのビューにバインドすることはできません。可能な解決策は、いくつかのプロパティを持つ「プロキシ」オブジェクトを作成し、このオブジェクトを次のようなキーパスでバインドすることです

prop1.someRealProp prop2.someRealPropOfSecondObject

于 2009-12-13T13:40:15.927 に答える