0

プログラムで NSTableView を作成/使用する必要があります。ドキュメントから、NSTableViewDataSource プロトコルを実装するようです。しかし、関数tableView:objectValueForTableColumn:row:は、(行インデックスのため) 手動で並べ替えを行う必要があることを示唆しています。そうですか?また、これは再表示のたびに呼び出されるため、Python を使用しているため遅くなる可能性があり、すべての行/列に対する Python 呼び出しを意味します。

Cocoa バインディングを使用することが理にかなっているかどうか、またそのほうが簡単かどうかは疑問です。いずれにせよ、私はそれをプログラムで行う必要があり、その方法について少しつまずいています。他の例から、私は NSArrayController を作成し、何らかの方法ですべてをバインドすると思います。

また、古い MacOSX でも動作させたいので、セルベースの NSTableView を使用する必要があると思います。

データ ソースは静的であり、編集できません。つまり、NSArray にデータを提供するだけです。

4

2 に答える 2

0

配列を一度ソートするだけで、デリゲート メソッドが呼び出されたときに、配列内の適切なインデックスにアクセスできます。

Table View Programming Guideをよく読んでください。

于 2012-11-15T23:55:30.803 に答える
0

There are three ways to use NSTableViews: 1) delegate methods; 2) NSArrayController; or 3) Bindings. My best advice to you is to learn all three of these in Xcode on a Cocoa ObjC project first before attempting to do this in python. Note: I'd also recommend that you first learn how to do these via nibs and then figure out how to do it programmatically (again in Xcode on a Cococa ObjC project before attempting it in python).

If you understand how Interface Builder (view in Xcode 4, app pre-Xcode4) bindings work then for the following code "Bind To" corresponds to myController, "Controller Key" would be "selection", and the Model Key Path would be "fullPath".

[myView bind: @"valuePath" toObject: myController withKeyPath: @"selection.fullPath" options: nil];

于 2012-11-06T15:55:27.057 に答える