0

のバインディングで少し迷っていますNSPopUpButton。ポップアップに表示したい項目の配列を保持するカスタム クラスがあります。これらの項目はNSManagedObjectのサブクラスであり、 に含まれていNSArrayます。NSArrayControllerプログラムで選択を変更するのに多くの問題があり、実装が雑然としているように感じるので、を使用したくありません。

問題は、配列をポップアップに適切にバインドする方法がわからないことです。私ができることは、ポップアップ メニューに配列項目をリストすることだけですが、タイトルはコア データ URI です。この方法を使用してタイトルを変更できると思いますdescriptionが、これはあまりお勧めできません。

適切にバインドする方法NSArrayはありますか?NSPopUpButton

4

1 に答える 1

1

私はそれを解決したと思います。私は単にこれらのバインディングを作成しましたNSPopUpButton:

  1. itemsプロパティ (タイプNSArray*)への「コンテンツ」

  2. 「選択したオブジェクト」からselectedItem(タイプItem*)

  3. 最後に「コンテンツ値」へitems.name

私が実装した3番目のバインディングについてvalueForKeyPath:

- (id)valueForKeyPath:(NSString *)keyPath
{
    NSArray *components = [keyPath componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"."]];
    if ([components count] == 2 && [components objectAtIndex:0] == @"items")
    {
        return [self.items valueForKey:[components objectAtIndex:1]];
    }
    return [super valueForKeyPath:keyPath];
}

3 番目のバインドは、タイトル用の別の配列にすることもできましたが、これははるかに柔軟です。

于 2011-09-30T18:02:34.170 に答える