Pergunta

Estou usando ligações pela primeira vez em um armazenamento de dados principal com um relacionamento um para muitos em minhas entidades. Eu exibo os subitens usando um NSCollectionView que mostra uma imagem e um título.

Os objetos são:

Subitems Array Controller (NSArrayController)
Collection View Item (NSCollectionViewItem)

Os controles são:

NSCollectionView
NSView (for the item)
   NSImageView
   NSTextField

Vinculei o NSImageView ao item de exibição de coleção com o caminho da chave do modelo como representadoObject.imagePath e um transformador de valor.Tudo isso funciona bem.

O que eu quero fazer é detectar um clique duplo no item no código e obter acesso ao representadoObject do item clicado duas vezes.

Tentei subclassificar NSImageView e substituir o evento do mouse por um evento de clique que funcionou, mas não consegui acessar daqui o contexto ManagedObject e o objeto selecionado.Não tenho certeza de como fazer isso da maneira correta.

Obrigado por qualquer ajuda, entendo que isso é algo básico e devo estar fazendo algo incorreto com a implementação das ligações.

Foi útil?

Solução

Implemente a subclasse para seu item de exibição de coleção, digamos CustomCollectionViewItem e altere a classe do item de exibição de coleção no IB.

Subclasse NSImageView também, nesta classe lida com o clique duplo.Crie um objeto delegado de referência fraca e vincule esse delegado ao seu CustomCollectionViewItem no IB.

Agora, ao clicar duas vezes, peça ao delegado para chamar qualquer método do seu CustomCollectionViewItem e em CustomCollectionViewItem você terá acesso ao representadoObject.

Agora, o problema é como passar isso para a classe do controlador real.Você precisa criar novamente um delegado de referência fraco em CustomCollectionViewItem e vincular esse delegado à classe Main Controller em IB.

Portanto, quando CustomCollectionViewItem recebe uma invocação da subclasse NSImageView, chame o método da classe Main Controller e passe o representadoObject.

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