0

NSComboBoxmainmenub ファイルに があります。コンボボックス「 cb 」のアウトレットを作成し、デリゲートと接続しました。また、デリゲートとデータソースをデリゲートに接続しました。

-(void)applicationDidFinishLaunching:(NSNotification *)aNotification
{    arr=[NSMutableArray arrayWithObjects:@"a",@"b",@"c",@"d",@"e",@"f", nil];
[cb reloadData];
}

-(NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox{
return arr.count;
}

-(id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)loc{
return [arr objectAtIndex:loc];
}

しかし、アプリケーションを実行すると、データがコンボボックスに表示されません。私はココアプログラミングが初めてなので、助けてください。前もって感謝します。

4

2 に答える 2

2

あなたのアプローチは一見合理的ですが、インスタンス変数として可変オブジェクトを使用することはしばしばお勧めできません(ここでの問題とはまったく関係がなく、この段階では説明する必要がない理由から)。

考えられる問題として飛び出す2つのことがあります。

1) ARC を使用していますか? そうでない場合は、自動解放されたオブジェクトを返し、それを保持するものが何もないarrため、あなたの下から消えます。-arrayWithObjectsARC (Lion の新しいプロジェクトのデフォルトだと思います) を使用している場合、これは当てはまりません。さらに、データが取得されないだけでなく、クラッシュすることも予想されます。

これは、 NSComboBox-setUsesDataSource:YESにデータ ソースを確認するか、@JustinBoo が提供する内部コンテンツ アプローチを使用するかを指示するフラグです。これはデフォルトで NO に設定されていると思います。これにより、正確な問題が発生します。現時点では、Interface Builder は手元にありませんが、IIRC には、この属性を有効にするためにチェックできる「データ ソースを使用する」チェックボックスがあります。

于 2012-05-10T08:22:56.300 に答える
1

次のよう-addItemWithObjectValueに Yourを使用してオブジェクトを追加できます。NSComboBox

arr = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",@"d",@"e",@"f", nil];

for (int i = 0; i < [arr count]; ++i)
{
    [cb addItemWithObjectValue:[arr objectAtIndex:i]];
}

詳細については、NSComboBox リファレンスを参照してください。

于 2012-05-10T07:18:11.937 に答える