NSTableView com botões Plus e Minus

Como posso fazer algo assim?

Screenshot

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

Alguma ideia?

A melhor maneira que encontrei é usar o NSSegmentedControl.

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

Style: Small Square Mode: Select Momentary 

parece melhor. Agora use o campo “image” para definir NSAddTemplate e NSRemoveTemplate . Certifique-se de que o campo da etiqueta esteja vazio.

Ok, temos ” + “, ” ” e um segmento vazio. Para impedir que o último seja selecionado pelo usuário, selecione-o na checkbox de seleção Segmentar: pop-up e desativar Ativado (localizado ao lado de Estado: label).

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

  1. Ir para o inspetor de tamanho
  2. Selecione o segmento 0
  3. Desativar a checkbox de seleção ” Fixo ” (o segmento deve ser automaticamente redimensionado para caber na imagem)
  4. Selecione o segmento 1 e repita o número 3
  5. Agora, quando você redimensiona o controle, apenas o último segmento mudará a largura
  6. Coloque-o na parte inferior da exibição da tabela e redimensione também.

Apreciar 😉

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

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 canvas).

Eu consegui o resultado desejado seguindo os passos abaixo:

  1. Adicione um NSSegmentedControl
  2. Adicione dois segmentos e defina a imagem para cada um:
    • NSAddTemplate para o botão +
    • NSRemoveTemplate para o botão -
  3. Defina o tamanho dos segmentos como fixed e defina o valor como 32 pixels
  4. O retângulo próximo aos botões é um NSButton com o Gradient estilo.
  5. O botão está ativado, mas Recusa primeiro respondedor é definido como true para que não seja clicável.

Screenshot

Uma resposta aqui sugere o uso de botões gradientes, no entanto, esses botões não podem ser desativados, pois isso faz com que o plano de fundo mude e, assim, interrompe a aparência. Outro sugeriu usar 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 a uma pergunta semelhante (com capturas de canvas): https://stackoverflow.com/a/22586314/15809