0

これはおそらく簡単な質問だと思いますが、これを理解するために頭を悩ませているのは次のとおりです。

私はこれを知っています:

- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index {
return [midiModelContents objectAtIndex:index];

}

指定されたインデックスでアイテムを返します。私の質問は、このルーチンを呼び出すためにどのコードを使用する必要があるかということです。

私はこのようなことを試しました:

NSString *curData =(comboBox: midiModel objectValueForItemAtIndex:0);

しかし、「エラー:「コンボボックス」が宣言されていません」というメッセージが表示されます

私が台無しにしているという概念を誰かが助けてくれますか?

4

1 に答える 1

2

まず、Objective-C プログラミング言語を読んで、自分自身を含むオブジェクトにメッセージを送信するための正しい構文を学習することをお勧めします。

(Objective-C にあるもの) 意味のないコードを記述したため、意味のないエラー メッセージが表示されます。有効な Objective-C メッセージ式は正常にコンパイルおよび実行されますが、期待どおりの結果が得られるとは思いません。

ほら(そしてこれは2番目のことです)、comboBox:objectValueForItemAtIndex:通常、あなたは自分自身に送るメッセージではありません. コンボ ボックスは、ユーザーがそのデータ ソースである場合にそのメッセージを送信します。データ ソースは、Cocoa Fundamentals Guideで詳しく説明されているデリゲート パターンのバリエーションです。

(メッセージを自分自身に送信することもできます。また、コンボ ボックスと同じオブジェクト値取得パスを意図的に実行したい場合は、これを行うことも理にかなっているかもしれませんが、これは、メッセージを作成するために行う必要があることではありません。コンボボックスの仕事。)

言語ドキュメントと Cocoa Fundamentals ドキュメントは、Cocoaのメモリ管理ガイドとともに、すべての Cocoa プログラマーにとって必読です。3 つの文書すべてを最初から最後まで読む必要があります。

当面の問題の解決策は、応答するオブジェクトがcomboBox:objectValueForItemAtIndex:コンボ ボックスのデータ ソースになることです。コンボ ボックスを作成したのと同じ nib で、おそらくこれを IB に接続します。

どれも意味をなさない場合、私があなたに提案できるのは、繰り返しになりますが、それらのドキュメントを読むことだけです. 彼らはすべてを説明します。

コンボ ボックスと同じ方法でオブジェクトの値を取得するつもりだった場合 (つまり、コンボ ボックスが既に機能しており、別の目的で同じ方法でオブジェクトの値を取得するつもりである場合) は、まだ必要です。 Objective-C プログラミング言語のドキュメントを読んで、そのメッセージを自分自身に送信するための正しい構文を学びます。

于 2010-10-27T23:11:18.340 に答える