0

OutlineView結果は、「アイテムの追加」、「グループの追加」、および「削除」ボタンを備えた設定パネルになるはずです。ボタンはエントリを に追加しますNSOutlineView。データはNSMutableDictionary (または適切なもの) に格納されます。でソート/ドラッグドロップが有効になりましたOutlineView

これを行うための最善または最も快適な方法は何ですか?

変更NSMutableDictionary中、?NSOutlineViewからリフレッシュ NSMutableDictionary変更NSOutlineView中、結果はNSMutableDictionary?に保存されます ... NSTreeController? ... CoreData?

そのためのベストプラクティスは何ですか?

前もって感謝します!

4

1 に答える 1

2

これはかなり広い質問です。NSMutableDictionaryモデル データは、コア データ エンティティ、独自に作成したカスタム オブジェクトなど、何らかのモデル オブジェクトに常に格納する必要があります。NSTreeControllerまたはNSOutlineViewインスタンスにデータを保存しないでください。これらはモデル オブジェクトではありません。

アプリの残りの部分に Core Data を使用していて、アウトライン ビューによって操作されるデータを永続化する必要がある場合、これは良い選択ですが、単純な要件しかない場合はやり過ぎかもしれません。

アウトライン ビューに表示される内容を制御するには、データソースNSTreeControllerに応答する独自のコントローラー オブジェクトNSOutlineViewとデリゲート プロトコルを使用するか、独自のコントローラー オブジェクトを使用できます。実際には、アイテムがグループ アイテムであるかどうかなど、NSOutlineViewデリゲート メソッドによってのみ制御できるものがあるため、両方を使用できます。

私の個人的な経験では、NSTreeController非常に単純なタスクを超えて対処するのが非常に難しいことがわかりました。今ではそれを長く使用しています。自分のコントローラーでデータソース メソッドを使用する方がはるかに簡単です。

アウトライン ビューの内容を変更する限り、常にコントローラーを介してモデルを変更する必要があり、ビューを直接更新しないでください。-add:コントローラーなどにメソッドを実装するか、使用している場合はの-add:メソッドをNSTreeController使用します。

次に、ビューのコントローラーがモデルの変更を検出し、ビューに更新を要求する必要があります。ビュー コントローラーとモデル コントローラーは同じオブジェクトにすることができますが、そうである必要はありません。Key-Value Observingは、コントローラーにモデルの変更を通知できる便利なテクノロジーです。

以下は、役立つと思われる Apple のサンプル コードです。

http://developer.apple.com/mac/library/samplecode/SourceView/

http://developer.apple.com/Mac/library/samplecode/AbstractTree/

于 2010-01-07T08:40:52.777 に答える