Cocoa でユーザー選択用のサムネイルベースのビューを実装するにはどうすればよいですか?
-
13-09-2019 - |
質問
非常に単純なニーズだと思ったのですが、それをどのように実装すればよいかわかりません。
インターフェースのさまざまなポイントで、ユーザーは視覚的なもの (ページのレイアウトや色のオプションの選択など) を選択するように求められます。これらの選択は、事前に定義されたオプションのセットから行われます。通常は NSPopUpButton または NSTableView を使用しますが、ユーザーには各選択オプションのサムネイルを表示したいと考えています。これらのサムネイルも適切なサイズ (少なくとも 100x100 ピクセル) である必要があります。各サムネイルにはテキスト ラベルも付ける必要があります。一度に選択できるのは 1 つだけです。
Apple は iWeb に次のようなものを実装しています。
iweb http://img187.imageshack.us/img187/5744/iweb.jpg
もちろん、あなたはこのような小さなアイコンを見ることに慣れています。
NSCollectionView が出発点であると考えていますが、これがはるかに複雑なシナリオでのみ使用されているのを見たことがあります (例:(ディレクトリの内容の表示、ドラッグ アンド ドロップのサポートなど) したがって、私が見つけたコードのほとんどはかなり複雑です。
このビューに静的な事前定義されたデータを入力し、単純な選択だけを可能にする、より簡単な解決策はありますか?言い換えれば、ポップアップ ボタンの機能はあるものの、別のユーザー インターフェイスを探しているということです。
アップデート:解決
提案どおり、IKImageBrowserを使用しました。 このチュートリアル とても役に立ちました。IB では:インターフェイスで IKImageBrowser を作成し、それをスクロール ビューでラップし、それをブラウザ オブジェクトのデータ ソースにしました。コード内:チュートリアルで説明されているようにデータ ソース プロトコルをコントローラーに実装し、allowsMultipleSelection と allowedEmptySelection を 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
このチュートリアルは非常に役に立ちます。画像の追加やズーム スライダーなどについては無視してください。
解決
IKImageBrowserView が必要です。