NSTableViewでCore Dataとバインディングしたカスタムセルの使用
カスタムセルで複数の値を同時に表示するためにはその値を持っているオブジェクトを渡せばいいです。
ただし、Core DataのManaged Objectはコピー(copyWithZone)に対応していないため、そのままでは使えなません。いくつかの対応方法はあるらいしいが、一番よく使われるのはObjectIDをキーチェーンで渡し、ManagedObjectContextからObjectIDをキーに該当するオブジェクトを取得することです。以下にカスタムセルを使うテーブルのカラムのバインディングのキーチェーンをObjectIDに指定する例を示します。
次に、カスタムセルを作成し、Interface Builderで該当するテーブルのカラムを選択し、セルにカスタムセルを設定します。(下図ではTDListViewCellを設定しています。)
次はカスタムセルの作成ですが、上記の図で分かるように、カスタムセルにはxibファイルに含まれているApp Delegateをアウトレットで指定します。これはApp DelegateオブジェクトからManagedObjectContextを取得するために必要です。
カスタムセルでは-(void) drawWithFrame: inViewを実装します。ManagedObjectContextを取得し、objectWithIDメソッドを利用して該当するManagedObjectを取得します。このオブジェクト内の値をカスタムセルの描画に使用します。
これでカスタムセルでManagedObjectを取得することができるようになります。次はカスタムセルの描画のみです。
(ここまで頑張って調べましたが、残念ながらこれは今回は使わないことになりそうです。)
広告
Entry filed under: Cocoa is ....
Trackback this post | Subscribe to the comments via RSS Feed