0

NSOutlineViewDataSource でもあるカスタム NSViewController があります。また、ビュー コントローラーのインスタンスにデータ ソースとしてバインドされた NSOutlineView と、カスタム ビュー コントローラーの view: プロパティにバインドされた NSOutlineView を含むウィンドウもあります。

コントローラーはアウトラインビューをうまく塗りつぶします。ただし、ビュー内の選択は、コントローラーのpresentedObject プロパティを自動的に更新しません。presentedObject の変更をトリガーしているように見える唯一のことは、 setRepresentedObject: を直接呼び出したときです...これは目的を無効にします。

なぜそれが考えられるのでしょうか?presentedObject自動的に更新されるはずですよね?前もって感謝します...

4

1 に答える 1

4

私があなたの質問を理解していれば、あなたは何のためにあるのか理解していませんrepresentedObject。は、View Controller が表示しているすべてrepresentedObjectのデータを表すモデル オブジェクトです。コンテンツのコレクションを表示するビューの現在の選択ではありません。カスタムのトップ レベル ビュー コントローラーの は、ビュー コントローラーに表示するデータのセットを含む またはその他のコレクション クラスになります。パターンが正しく使用されている場合、カスタム トップ レベル ビュー コントローラーの を変更すると、まったく新しいデータ セットにスワップ アウトされる効果があります。representedObjectNSArrayrepresentedObject

通常、表形式のビューの個々の要素のビュー コントローラーにはそれぞれ独自のビュー コントローラーがrepresentedObjectあり、このオブジェクトは変更されません。たとえばNSCollectionView、ビューで each 要素を使用していた場合NSCollectionViewItem、 のサブクラスであるによって制御されNSViewControllerます。representedObjectfor eachは、NSCollectionViewItem小さなビューに表示するデータを指示します。

NSOutlineViewとそのスーパークラスは、Mac OS X 10.7 以降でこのように使用することを選択しない限りNSTableView、それらのセルがNSCells本格的ではないことが多いという点で異なります。この場合でも、通常、各セルを管理NSViewsするサブクラスはありません。NSViewControllerしたがって、View ControllerrepresentedObjectパターンは、ユーザーが選択する個々の要素のレベルでは使用されません。の選択を追跡することが必要な場合は、これを可能NSOutlineViewにする多くのNSTableView方法があります。

于 2012-09-01T07:45:33.843 に答える