20

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

私の知る限り、デリゲート メソッドはセル ベースとビュー ベースで異なります。セルベースの NSTableView ニーズtableView:objectValueForTableColumn:row:とビューベースの NSTableView ニーズtableView:viewForTableColumn:row:. NSTableView のインスタンスがセルベースまたはビューベースで動作することを決定するものはありますか?

4

1 に答える 1

24

次の説明に加えて、 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/TableView/Introduction/Introduction.htmlを参照することをお勧めします。

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

OS X バージョン 10.7 では、テーブル ビューが再設計され、ビューを個々のセルとして使用できるようになりました。これらは、ビューベースのテーブル ビューと呼ばれます。ビューベースのテーブル ビューを使用すると、Xcode 4.0 の Interface Builder 部分でカスタム セルを設計できます。これにより、設計時のレイアウトが容易になるだけでなく、変更のアニメーション化や描画のカスタマイズも容易になります。セルベースのテーブル ビューと同様に、ビューベースのテーブル ビューは、選択、列のドラッグ、およびその他のユーザーが予期するテーブル ビューの動作をサポートします。唯一の違いは、開発者が設計と実装においてはるかに柔軟に対応できることです。

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

于 2013-03-25T22:38:41.073 に答える