Pergunta

Eu estou tentando decidir qual caminho tomar para desenvolver meu aplicativo Snow Leopard. Primeiro, eu deveria prefácio com as diferenças óbvias:

NSTableView pode ter várias colunas de dados para representar diferentes partes do mesmo "elemento" de dados (a linha), onde NSCollectionView pode exibir uma grade de dados como bem, mas cada linha + coluna combinação é seu próprio elemento. Para os meus propósitos, supor que eu estou lidando com uma única coluna.

  1. Tanto quanto eu posso dizer, itens NSCollectionView são NSViews qual todos devem estar com as mesmas dimensões. Também, ao contrário NSTableView, itens CollectionView são copiados para o NSCollectionView em vez de ser fornecido como necessário por um dataSource (eu sou incerto sobre isso, por favor me corrija se eu estiver errado).

  2. Usa NSTableView NSCells se você decidir personalizar a exibição de linhas. Como NSCell não é uma NSResponder, como se eventos punho (se eu queria adicionar algum tipo de acessório para a célula, como a forma como as setas no trabalho iTunes (embora, iTunes é carbono). Eu vi algumas subclasses NSCell em IB que parecem ser equivalentes de seus irmãos NSControl, mas o que se eu quiser ter objetos MySweetView em uma NSCell?).

  3. Ambos parecem trabalho sobre o mesmo com aspectos ao Bindings, correto?

  4. Finalmente, NSCollectionView parece jogar bem com a animação dos seus elementos (para itens re-organizar, ou filtrá-los, por exemplo). Pode NSTableView fazer isso com suas fileiras?

Qualquer outra coisa que eu deveria considerar?

Foi útil?

Solução

  1. A diferença aqui é que numa vista de tabela, cada linha é um item, e as colunas mostram diferentes aspectos (propriedades) de que item. Em uma visão de coleção, cada intersecção linha-coluna é um item.
  2. Eu não fiz isso, mas tentar implementar tableView:didClickTableColumn: em sua delegado exibição de tabela. Esse método é novo em 10,6. Você precisaria obter [NSApp currentEvent], e provavelmente passá-lo para um método na célula da coluna.
  3. Com uma exibição de tabela, você ligar a coluna; você não vincular a vista (para não fornecer conteúdo, de qualquer maneira, você faz ligam a visão para coisas como índices de seleção). Com uma visão de coleção, não há colunas (ver # 1), então você sempre se ligam a vista.
  4. Não.

Outras dicas

FWIW, NSTableView é uma parte muito antiga da AppKit, e é um pouco intrincada.

Se você é novo para a plataforma, eu recomendaria começar sua cabeça em torno NSCollectionView primeiro.

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