Pergunta

Eu tenho um NSTableView baseado em visualização que é preenchido por meio de ligações.Meus textFields e imageViews são vinculados às propriedades de objectValue de NSTableCellView.

Se eu quiser ter um botão de edição / informação em meu NSTableCellView:

  1. Quem deve ser o alvo da ação do botão?

  2. Como o destino obteria o objectValue que está associado à célula em que o botão está?

No final das contas, eu gostaria de mostrar um popover / folha com base no objectValue.

Foi útil?

Solução

Sua classe de controlador pode ser o alvo.Para obter o valor do objeto:

- (IBAction)showPopover:(id)sender {
    NSButton *button = (NSButton *)sender;
    id representedObject = [(NSTableCellView *)[button superview] objectValue];
}

Ou use uma subclasse de NSTableCellView, torne a visualização da célula o alvo da ação do botão e chame [self objectValue] para obter o objeto.

Outras dicas

Encontrei uma resposta adicional: a resposta acima parece presumir que você está usando ligações em sua visualização de tabela.Como sou meio novato, descobri uma maneira de colocar o botão dentro da célula de exibição da tabela.

- (IBAction)getCellButton:(id)sender {
     int row = [xmlTable rowForView:sender];
}

Dessa forma, ao clicar no botão dentro da linha, você não precisa ter a linha selecionada.Ele retornará o valor int da linha para corresponder a uma fonte de dados em uma matriz sem vinculações.

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