0

NSTableView親の各アイテムの の設定を (理想的にはその自動保存機能を活用して) 保存する最良の方法は何NSTreeControllerですか? 私は基本的に、iTunes が各プレイリストの列設定を個別に保存する方法を再現しようとしています。

ただし、多くの列があり、個々の列のサイズなどをすべて手動で保存したくありません。Core Data も使用しており、既存のデータ モデルを使用してこの情報を保持するソリューションが大好きです。

アップデート

の列設定の表現を簡単に保存および読み取ることができるいくつかのコード ( Daniel Jalkut からの a ) を見つけました。Categoryそのため、現在そのエンティティのビューの設定を保存している Core Data エンティティにバイナリ属性を作成しました。NSDictionaryNSTableView

私ができるようにしたいのは、エンティティの各インスタンスが選択されると、設定を自動的に取得することです。で Key-Value Observation を使用してこれを実行しようとしましたNSTreeControllerが、残念ながら適切な通知が得られません。新しいノードの設定で上書きする前に、前のノードの設定を保存できるように、切り替える項目を知りたいです。

@"selection"@"selectedObjects"、および を、見つけ@"selectedIndexPaths"られるすべての引数で観察しようとしましたが、どれも適切に機能していないようでした。適切なタイミングで通知を受け取りますが、プロパティの変更によって送信される辞書optionsに有用な情報がありません。"change"

4

1 に答える 1

2

上記でリンクしたNSTableView+RSAuto Savingカテゴリ (Daniel Jalkut と Red Sweater Software の厚意による)を使用することにし、列が非表示かどうかも保存するようにいくつかの変更を加えました。この NSDictionary を Core Data 親エンティティにバイナリ データ属性として保存します (また、並べ替え情報を個別に保存するために別のエンティティを作成しました)。

次に、ウィンドウ コントローラーに NSOutlineView からの 2 つの通知をリッスンさせます。通知では@"NSOutlineViewSelectionIsChangingNotification"、NSTreeController の選択は古いノードです。この時点で NSTableView の設定を保存します。次に、@"NSOutlineViewSelectionDidChangeNotification"通知で、新しいノードから設定を読み込みました。これは魅力のように機能します。

于 2010-12-22T01:09:25.330 に答える