1

NSTreeController からのデータを (バインディング経由で) 表示する NSTableView があります。アプリケーションは、バインドされた配列にデータを頻繁に追加/変更します。

問題は、ユーザーがテーブル内の行を選択したが、スクロールしたために選択したデータが表示されなくなった場合、アプリケーションが配列を更新すると、選択された行が再び表示されるように表示が自動スクロールすることです。画面上で。特に新しいデータはいつでも到着する可能性があるため、これはユーザーにとってかなりイライラします。

この機能を無効にする方法はありますか?

4

2 に答える 2

2

への呼び出しを一時的に括弧で囲んで、をサブクラス化NSTableViewし、オーバーライドする必要がある場合があります。また、スクロールするかどうかを追跡するために、サブクラスにカスタム BOOL ivar が必要になる場合があります。-scrollRowToVisible:super

自動スクロールがいつトリガーされるかを確認するために、そこにブレークポイントを設定することから始めます。これは、ivar を切り替える適切なタイミングを見つけるのに役立ちます。

于 2010-01-11T13:08:32.533 に答える
0

と を使用していますか?またはとを使用してNSTreeControllerいますか? を と一緒に使うのはあまり意味がありませんか?NSOutlineViewNSArrayControllerNSTableViewNSTreeControllerNSTableView

を使用しているNSTableView場合は、おそらく を使用しNSArrayControllerてそのデータを管理する必要があり、この行の再配置は の機能ですNSArrayController。IB 内のコントローラーでコンテンツの自動再配置オプションをオフにしてみてください。

オンの場合、配列コントローラーは、並べ替えの順序に影響を与えるオブジェクトの追加、削除、および変更 (存在する場合) でオブジェクトを再配置し、テーブル ビューまたはアウトライン ビューのデータを再読み込みします。

主に、私にとってはうまく機能したことがないため、使用していないため、同様の機能については知りNSTreeControllerません。残念ながら、データソース メソッドを使用して、NSOutlineView昔ながらの方法でデータを提供することをお勧めします。私の経験でNSTreeControllerは、最も些細なタスクにのみ適しています。

于 2010-01-12T07:20:49.980 に答える