NSButton em NSTableCellView: Como encontrar o objectValue desejado?
-
27-10-2019 - |
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:
-
Quem deve ser o alvo da ação do botão?
-
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.
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.