Pergunta sobre interface-builder, cocoa – NSTableView com botões Plus e Minus

20

Como posso fazer algo assim?

Não encontrei nenhum objeto apropriado na biblioteca do Interface Builder.

Alguma ideia?

Sua resposta

4   a resposta
8

Use um NSButton com um estilo de gradiente e, para as imagens, use o NSAddTemplate e NSRemoveTemplate fornecidos pelo sistema.

Bom, mas ao usar vários botões de gradiente, desabilitar um deles quebra a aparência. O controle segmentado funciona melhor aqui, pois a desativação de um único segmento apenas escurece o texto ou a imagem, mas não altera o plano de fundo. Mecki
34

A melhor maneira que encontrei é usar o NSSegmentedControl.

depois de arrastar na tela, você deve configurar seu estilo:

Style: Small Square
Mode:  Select Momentary

parece melhor. Agora use o campo "imagem" para definirNSAddTemplate eNSRemoveTemplate. Certifique-se de que o campo da etiqueta esteja vazio.

Ok, nós temos "+","-"e um segmento vazio. Para impedir que o último seja selecionado pelo usuário, selecione-oSegmento: aparecer e desligarativado caixa de seleção (localizada ao ladoEstado: rótulo).

E finalmente, o que temos que fazer é definirlargura dos dois primeiros segmentos para torná-los quadrados.

Vamos paraInspetor de tamanhoSelecioneSegmento 0Desligar "Fixo"checkbox (o segmento deve ser automaticamente redimensionado para caber na imagem)SelecioneSegmento 1 e repita o número 3Agora, quando você redimensiona o controle, apenas o último segmento mudará a larguraColoque-o na parte inferior da visualização de tabela e redimensione também.

Apreciar ;)

@bithavoc, não estou mais com o XCode / Cocoa e tudo mais. Sinta-se à vontade para editar a resposta. ratijas
eu usei em parte não-redimensionável da janela. mas como eu sei, é realmente desafiador conseguir redimensionar. Se você conseguir isso, me avise postando outra resposta e eu irei votar em você. ratijas
Eu gosto disso melhor que a resposta aceita porque mantém tudo junto e eu posso desabilitar o terceiro segmento sem mudar sua aparência. Mas como você lida com o redimensionamento de uma janela que amplia o controle? JeremyP
@ JeremyP Ver segunda parte da respostastackoverflow.com/a/22586314/15809 ; você pode misturar um controle segmentado com um NSButton para obter a aparência ideal, o comportamento e o redimensionamento automático. Mecki
FYI, não é mais chamado de Mode SelectNone masMomentary bithavoc
3

Uma resposta aqui sugere o uso de botões de gradiente, no entanto, esses botões não podem ser desativados, pois isso faz com que o plano de fundo mude e, assim, quebra a aparência. Outro sugeriu o uso de um controle segmentado, que é quase perfeito, mas os controles segmentados não suportam o redimensionamento automático, por exemplo. se a largura da tabela é dinâmica. Minha sugestão é uma combinação de ambos. Use um controle segmentado para os botões reais e um botão de gradiente para preencher o restante da largura da tabela que também pode ser dinâmica se a largura do botão também for dinâmica.

Veja minha resposta para uma pergunta semelhante (com capturas de tela):https://stackoverflow.com/a/22586314/15809

8

Atualização para o OSX Yosemite

Tentei obter a mesma aparência que o Mail.app tem na visão Contas (janela direita na minha captura de tela).

Eu consegui o resultado desejado seguindo os passos abaixo:

Adicione umNSSegmentedControlAdicione dois segmentos e defina a imagem para cada um:NSAddTemplate para o+ botãoNSRemoveTemplate para o- botãoDefina o tamanho dos segmentos parafixed e defina o valor para32 píxeisO retângulo ao lado dos botões é umNSButton com o estiloGradient.O botão está ativado, masRecusa primeiro respondente está configurado paratrue de modo que não seja clicável.

Perguntas relacionadas