2013-03-25 9 views
14

私の理解が間違っていない場合、セルベースのNSTableViewとビューベースのNSTableViewは同じタイプのインスタンスです。 次に、どのようにCPUベースのセルとビューベースのセルを区別しますか?セルベースのNSTableViewとビューベースのNSTableViewの違いは何ですか?

私が知る限り、デリゲートメソッドは、セルベースとビューベースで異なります。 セルベースのNSTableViewはtableView:objectValueForTableColumn:row:、ビューベースのNSTableViewはtableView:viewForTableColumn:row:が必要です。 NSTableViewのインスタンスがセルベースまたはビューベースの動作を決定するものはありますか?以下の説明に加えて

答えて

18

私は、テーブルビュー内の個々のセルをNSCellのサブクラスであることが要求されたOS Xバージョン10.6およびそれ以前では http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/TableView/Introduction/Introduction.html

を通過することができお勧めします。このアプローチでは、複雑なカスタムセルを設計するときに制限が生じ、通常は開発者が独自のNSCellサブクラスを作成する必要があります。さらに、進行状況ビューなどのアニメーションを提供することは非常に困難でした。

OS Xバージョン10.7では、テーブルビューが再設計され、ビューを個々のセルとして使用できるようになりました。これらはビューベースのテーブルビューと呼ばれます。ビューベースのテーブルビューでは、Xcode 4.0のInterface Builder部分でカスタムセルをデザインできます。設計が簡単になり、変更をアニメートして図面をカスタマイズすることが容易になります。ビューベースのテーブルビューは、セルベースのテーブルビューと同様に、選択、列のドラッグ、その他のユーザーが期待するテーブルビューの動作をサポートします。唯一の違いは、開発者には設計と実装の柔軟性がはるかに大きいことです。

ビューベースおよびセルベースのテーブルビューの作成とカラムの追加は、Interface Builder内で同じ手法を使用します。この違いは、個々のセルを提供したり、テーブルビューの内容を入力したり、テーブルビューの外観をカスタマイズしたりするときにアプリケーションコードで発生します。同様に、Cocoaバインディング手法は2つの実装間で全く異なります。

関連する問題