0

テーブル(TableView)を作成して、3つの列の値を表示させることはできますか?-これらの3つの列の下にN個の値を持つCol1、Col2、Col3?

Col1 Col2 Col3
Value1 Value1 Value1
Value2 Value2 value2
Value3 value3 value3
.... ... ...
.... ... ...
.... ... ...
Valuen Valuen Valuen

MutableDictionaryやMutableArrayをコーディングして、このようなことを行う方法がわかりません。

私はカカオプログラミングとObjective-cに不慣れです。私が見ることができるポイントコードのサンプルはありますか?

私は感謝されます。

4

3 に答える 3

4

Matt B. の答えは技術的には正しいですが、「ココア プログラミングと Objective-C に慣れていない」人にとっては、バインディングは最初は魔法が多すぎて理解できないかもしれません。(ちなみに、私はココアのことを2年間やっていますが、コツをつかみ始めたところです)

最初に理解しておくべきことは、デリゲート パターンです。このパターンは、Cocoa フレームワークで非常に頻繁に使用されます。オブジェクトを手動で設定するには、このパターンNSTableViewを理解する必要があります。

基本的な考え方は、 はNSTableView描き方を知っているが、を描くかは知らないということです。したがってNSTableView、「デリゲート」オブジェクトを指定すると、テーブルビューはデリゲートに行数、各行に何が入るかなどを尋ねます。

デリゲート オブジェクト自体は、テーブルビューに何を入れるべきかを知っているオブジェクトですが、それを描画する方法は知りません。NSTableViewDataSourceプロトコル (Java の「インターフェース」に相当)に準拠します。こうすることNSTableViewで、デリゲートにクエリを実行し、必要な情報を要求するために使用できる標準的なメソッドのセットが に含まれます。

于 2010-01-21T05:09:35.973 に答える
2

MutableDictionaryやMutableArrayをコーディングして、このようなことを行う方法がわかりません。

ここでは辞書はまったく役に立たない。

テーブルにリストしたいものをモデル化するオブジェクトを作成する必要があります。各行は、これらのオブジェクトの1つに対応しており、おそらく配列に保持されます。列は、モデルオブジェクトのプロパティに対応しています。

最も一般的な図は、人(従業員など)のリストです。テーブルビューの各行には、1つのPersonオブジェクトが表示されます。各列には、そのオブジェクトの1つのプロパティ(名、姓、おそらく会社名、電話番号など)が表示されます。バインディングとテーブルビューデータソースプロトコルはどちらも、この方法で最適に(つまり、最も簡単に)機能するように設計されています。

モデルオブジェクトの実装を引き継いで、並列配列などを作成したくなるかもしれません。データソースを使用している限り、これを行うことができますが、このトラップに陥らないでください。後でバインディングに切り替えることができなくなり、プロパティがAppleScriptに公開されます(3つの配列を表示することはできません)。 1つのプロパティのように)不可能であり、単一のテーブルビューを超えてUIを開発することははるかに困難になります。

CocoaはModel-View-Controllerを中心に設計されています; モデルを提供することでそれを操作すると、Cocoaのすべてがはるかに簡単になります。

(いいえ、辞書はモデルオブジェクトとしては十分ではありません。AppleScriptやBindingsには役立ちません。また、単純なキーのボックスよりもスマートにモデルオブジェクトを作成したい場合はいつでも失敗します-値のプロパティ。派生プロパティ、動作、およびカスタム初期化子はすべて、辞書に実装した場合、せいぜい醜いハックです。)

于 2010-01-21T05:34:40.190 に答える
1

ここで求めているキーワードはbindingsです。Cocoa バインディングは、最初はブードゥー教のように見えるかもしれませんが、配列の内容をテーブル ビューに公開するための事実上の方法です。そして、一度コツをつかめば、それは絶対に素晴らしいです。

NSTableView bindings tutorialをグーグル検索すると、かなりの数のページが表示されます。 CocoaDevCenter のこのチュートリアルは非常に優れています (ほとんどのものと同様に、バインディングは高度なトピックであり、以前のガイドの一部も役立つ場合があります)。

Apple のドキュメントはもう少し内容が濃いですが、こちらも役立つかもしれません。

于 2010-01-21T04:41:38.970 に答える