Pergunta

Eu tenho o que eu achava que era uma necessidade muito simples, mas eu não tenho certeza de como proceder para implementá-lo.

Em vários pontos na minha interface, o usuário é solicitado a fazer uma seleção de algo bastante visual (como escolher um layout de uma página ou uma opção de cor.) Essas seleções são feitas a partir de um conjunto pré-definido de opções. Normalmente, você usaria um NSPopupButton, ou talvez um NSTableView, mas eu gostaria que o utilizador para ver miniaturas de cada opção de seleção. Essas miniaturas deve ser de um tamanho decente, também - pelo menos 100x100 pixels. Cada miniatura também deve ser acompanhada de um rótulo de texto. Apenas uma seleção é permitida ao mesmo tempo.

Apple implementa algo bastante como este no iWeb:

iweb http://img187.imageshack.us/img187/5744/iweb. jpg

É claro que você está acostumado a ver algo como isso com pequenos ícones:

xcode

Eu estou pensando que um NSCollectionView é o lugar para começar, mas eu só vi isso usado em cenários muito mais complicado (por exemplo: exibir o conteúdo de um diretório, suporte arrastar e soltar, etc.) Portanto, a maior parte do código que eu encontrei é bastante complicado.

Existe uma solução mais simples para preencher essa visão com estática, os dados pré-definido e apenas permitem uma selecção simples? Em outras palavras, eu estou olhando para a funcionalidade de um botão pop-up, mas uma interface de usuário diferente.

Update: solução

Eu costumava IKImageBrowser, como sugerido. Este tutorial foi muito útil. Em IB: Eu só fiz um IKImageBrowser na minha interface, envolveu-o num exibição de rolagem, e tornou a fonte de dados do objeto browser. No código:. Implementado o protocolo de fonte de dados no meu controlador como o tutorial explica, definir allowsMultipleSelection e allowsEmptySelection de NO, criou um objeto imagem personalizada usando a representação da imagem URL exatamente como explicado no tutorial

Então, para obter a seleção, eu escrevi o seguinte método para ser acionado quando o usuário clica no botão "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

O tutorial é muito útil - basta ignorar o material sobre a adição de imagens e zoom sliders e tal

.
Foi útil?

Solução

Você quer IKImageBrowserView.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top