私は非常に単純なニーズだと思っていましたが、それを実装する方法がわかりません。
インターフェイスのさまざまなポイントで、ユーザーはかなり視覚的なものを選択するように求められます (ページのレイアウトや色のオプションを選択するなど)。これらの選択は、事前に定義された一連のオプションから行われます。通常は NSPopUpButton または NSTableView を使用しますが、各選択オプションのサムネイルをユーザーに表示してもらいたいと思います。これらのサムネイルも適切なサイズである必要があります (少なくとも 100x100 ピクセル)。各サムネイルには、テキスト ラベルも付ける必要があります。一度に選択できるのは 1 つだけです。
Apple は、iWeb で次のようなものを実装しています。
iweb http://img187.imageshack.us/img187/5744/iweb.jpg
もちろん、小さなアイコンで次のようなものを見たことがあるでしょう:
私は NSCollectionView が出発点であると考えていますが、これがはるかに複雑なシナリオで使用されているのを見たことがありません (例: ディレクトリの内容を表示する、ドラッグ アンド ドロップをサポートするなど)。私が見つけたコードはかなり複雑です。
このビューに事前定義された静的データを入力し、単純な選択を可能にする簡単なソリューションはありますか? つまり、ポップアップ ボタンの機能を探していますが、別のユーザー インターフェイスを探しています。
更新: 解決策
提案どおり、IKImageBrowser を使用しました。このチュートリアルはとても役に立ちました。IB: インターフェースで IKImageBrowser を作成し、それをスクロール ビューでラップして、ブラウザ オブジェクトのデータ ソースにしました。コード: チュートリアルで説明されているようにコントローラーにデータ ソース プロトコルを実装し、allowsMultipleSelection と allowEmptySelection を NO に設定し、チュートリアルで説明されているとおりに URL 画像表現を使用してカスタム画像オブジェクトを作成しました。
次に、選択を取得するために、ユーザーが「OK」ボタンをクリックしたときにトリガーされる次のメソッドを作成しました。
NSIndexSet *retval = [imageBrowser selectionIndexes];
NSInteger i = [retval firstIndex]; //the index of the selection. Corresponds to index in my array data source
NSString* path = [[styleViewData objectAtIndex:i] imageRepresentation]; //path to selected image, if you need it
チュートリアルは非常に役に立ちます。画像の追加やズーム スライダーなどについては無視してください。