2

Snow Leopard アプリを開発するためにどの道をたどるかを決めようとしています。まず、明らかな違いを紹介する必要があります。

NSTableViewデータの同じ「要素」(行)のさまざまな部分を表すために複数のデータ列を持つことができ、NSCollectionViewデータのグリッドも表示できますが、すべての行 + 列の組み合わせは独自の要素です。私の目的のために、1 つの列を扱っていると仮定します。

  1. 私が知る限り、NSCollectionViewitem はNSViewすべて同じ次元でなければならない です。また、 とは異なりNSTableView、 collectionview アイテムはNSCollectionView必要に応じて から提供されるのではなく、 にコピーされますdataSource(これについてはよくわかりません。間違っている場合は訂正してください)。

  2. NSTableViewNSCell行の表示をカスタマイズする場合は、s を使用します。NSCellではないので、イベントNSResponderをどのように処理しますか (iTunes の矢印がどのように機能するかのように、セルに何らかのアクセサリを追加したい場合 (ただし、iTunes は Carbon です) NSCell。IB でいくつかのサブクラスが表示されるのを見てきました)それらの兄弟と同等である必要がありますが、オブジェクトを?)NSControlに入れたい場合はどうすればよいですか?)。MySweetViewNSCell

  3. バインディングに関してはどちらもほぼ同じように見えますね。

  4. 最後に、NSCollectionViewその要素のアニメーションでうまく機能するように見えます (たとえば、アイテムの再配置やフィルター処理など)。NSTableViewその行でこれを行うことができますか?

他に考慮すべきことはありますか?

4

2 に答える 2

3
  1. ここでの違いは、テーブル ビューではすべての行が 1 つのアイテムであり、列にはそのアイテムのさまざまな側面 (プロパティ) が表示されることです。コレクション ビューでは、すべての行と列の交点が 1 つのアイテムです。
  2. tableView:didClickTableColumn:私はこれを行っていませんが、テーブル ビュー デリゲートに実装してみてください。このメソッドは 10.6 で新しく追加されました。を取得する必要があり[NSApp currentEvent]、おそらくそれを列のセルのメソッドに渡します。
  3. テーブル ビューでは、列をバインドします。ビューをバインドしません (とにかく、コンテンツを提供するためではありません。選択インデックスなどのためにビューをバインドします)。コレクション ビューには列がないため (#1 を参照)、常にビューをバインドします。
  4. いいえ。
于 2009-11-01T00:02:25.723 に答える
2

FWIW、NSTableView は AppKit の非常に古い部分であり、少し粗雑です。

このプラットフォームを初めて使用する場合は、まず NSCollectionView について理解することをお勧めします。

于 2009-11-01T11:29:36.220 に答える