Pergunta

Na minha configuração, tenho uma visão ncollection de volumes conectados ao Mac. Para a visualização do NSCOLLECTIONVIEWItem, tenho um NSBox com um NSTableView no interior da lista o conteúdo desse volume.

Meu problema vem ao tentar adicionar/remover itens ao NSTableView. O NSBox parece ser inicializado uma vez, então existe apenas um NSTABLEVIEW. Isso significa que, quando quero atualizar os dados dentro do NStableView, não posso chamar o Reloaddata em um iboutlet e enviá -lo por todas as tabelas.

Se eu criar um iboutlet em uma subclasse do NSBox, é nulo para a instância, por isso não posso chamá -lo através disso.

O mais próximo que cheguei é envolver um @Try @catch em torno do código que retorna o objeto em uma linha em uma coluna, ocorre uma exceção porque esse item não existe mais, para que eu possa pegar a tabela e chamar Reloaddata, que parece Atualize esse NStableView específico.

O problema é que, se o item removido estiver no final da tabela ou se um item for adicionado, a exceção não ocorrerá, pois poderá ver todos os itens existentes.

Alguém já teve alguma experiência com um NSTABLEVIEW em uma visão de NSCollectionViewItem? Como você atualizou as tabelas?

Foi útil?

Solução

Coloque o NSBox (com seu NSTableView) em sua própria ponta. Cada vez que você cria um novo item de exibição de coleção, carregue a ponta, defina esse NSBox como a visualização do item da coleção e libere o NSBox.

Quanto à alimentação das vistas da mesa, a maneira mais fácil é provavelmente as ligações. Ligue cada coluna da exibição da tabela a uma propriedade diferente do objeto modelo que o item de exibição da coleção representa. Você provavelmente vai querer passar por um controlador de matriz, é claro, o que significa ter um desses itens de visualização por coleção e adicioná -los a uma matriz, que você lançará dealloc.

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