Question

Je suis en train de décider quel chemin prendre pour développer mon application Snow Leopard. Tout d'abord, je devrais commencer avec les différences évidentes:

NSTableView peut avoir plusieurs colonnes de données pour représenter les différentes parties du même « élément » de données (une ligne) où NSCollectionView peut afficher une grille de données aussi bien, mais chaque rangée + combo de colonne est son propre élément. Pour mes fins, je suppose que je traite une seule colonne.

  1. Pour autant que je peux dire, les éléments de NSCollectionView sont NSViews qui doivent tous être des mêmes dimensions. En outre, contrairement NSTableView, les éléments sont copiés dans main collection la NSCollectionView au lieu d'être fourni au besoin par un dataSource (je suis pas sûr de cela, s'il vous plaît me corriger si je me trompe).

  2. NSTableView utilise NSCells si vous décidez de personnaliser l'affichage des lignes. Comme NSCell est pas un NSResponder, comment peut-on les événements de la poignée (si je voulais ajouter une sorte d'accessoire à la cellule, comme la façon dont les flèches dans le travail iTunes (bien que, iTunes est Carbon). Je l'ai vu certaines sous-classes de NSCell dans IB qui semblent être équivalents de leurs frères NSControl, mais si je veux avoir des objets MySweetView dans un NSCell?).

  3. Les deux semblent travailler sur le même avec égards aux consolidations, correct?

  4. Enfin, NSCollectionView semble jouer bien avec animation de ses éléments (pour les articles de ré-arrangement, ou de les filtrer, par exemple). Peut NSTableView faire avec ses lignes?

Tout ce que je devrais considérer?

Était-ce utile?

La solution

  1. La différence ici est que dans une vue de table, chaque ligne est un élément, et les colonnes différents aspects (propriétés) de cet article. Dans une vue de collection, chaque intersection ligne-colonne est un élément.
  2. Je n'ai pas fait cela, mais essayez de mettre en œuvre tableView:didClickTableColumn: dans votre délégué vue de tableau. Cette méthode est nouvelle en 10.6. Vous auriez besoin d'obtenir [NSApp currentEvent], et probablement passer à une méthode dans la cellule de la colonne.
  3. En vue de la table, vous liez la colonne; vous ne lient pas la vue (pas fournir du contenu, de toute façon, vous ne lient le point de vue pour des choses comme les index de sélection). En vue de la collecte, il n'y a pas de colonnes (voir # 1), de sorte que vous lierez toujours la vue.
  4. Non.

Autres conseils

FWIW, NSTableView est une très vieille AppKit, et il est un peu crufty.

Si vous êtes nouveau à la plate-forme, je vous recommande de prendre votre tête autour NSCollectionView premier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top