2012-04-23 20 views
2

iOSでは、NSTableView(UITableView)は、現在のビューに必要なセルのみを表示するという意味で遅延ロードされます。ユーザーが上下にスクロールすると、データソースからより多くの情報がロードされます。NSTableViewを遅延ロードする

OSXに類似したものはありますか?私は1000以上のレコードを持つNSTableViewを持っています(複数の列)が遅い読み込みを引き起こしているだけでなく、スクロールアップまたはスクロール時に遅れています。

可能であれば、この「怠惰な」読み込みは良い解決策ですか?または同じ行に沿った何か?

ありがとうございました。

P.S.ロードプロセスについて - 私は、データをロードするために、2つの通常の方法

-(id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex 

-(NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView 

を使用しています。それらの中には、データを含む2つのコンボボックスがあり、 "ALL"と "ALL"を含むこれらの1000+レコードをロードすると、いくつかの変数をチェックするif文があります。コンボボックスが "ALL"でも "ALL"でもない場合は、2つのレコードだけが読み込まれます。

私は、レイジーロードが自動的に行われることを説明したので、XMLファイルからデータをロードしているので、処理時間が長くなる可能性があります。

XMLファイルからのデータを実行時にNSDictionaryにロードし、必要に応じて使用できるようにするために、情報を実際に表示する必要があるときにロード時間を避けることができます。

あなたはどう思いますか?ありがとう!

+0

'NSTableView'コンテンツは実際に遅延読み込みされています。データソースまたはバインディングを通じてデータを提供していますか?データソースを通じて、 'objectValueForTableColumn:row:'の実装を投稿してください。バインディングを使用する場合は、アクセサを見て、既存のivarを返すより複雑な処理をするかどうかを確認してください。 – Dondragmer

+0

@Dondragmerはまさに正しいです。 'NSTableView'が遅れてロードされない唯一の理由は、何か間違ってしまった場合です。テーブルビューをどのように作成するかについての詳細が必要です。 –

+0

ありがとうございました!私はP.S.を追加しました。さらに詳しい情報があります。 – Kevin

答えて

1

XMLファイルを何らかの種類のデータ構造にキャッシュしてください。 tableView:objectValueForTableColumn:row:メソッドは、すべての可視セルに対して1回、と呼ばれます。列が多い場合は、200個のセルを表示するのは簡単です。 Page Downし、これらのセルがすべて変更されると、XMLファイルが200回ロードされ、遅いスクロールが発生します。

XMLファイルが特定の列のすべてのセルに対して読み込まれ、解析されても、遅くなり、修正する必要があります。

キャッシュが必要であることを確認するには、tableView:objectValueForTableColumn:row:が返されます。nil XMLファイルを解析します。この変更を行うとスムーズにスクロールするのですか、それとも他の問題がありますか?アプリケーションを使用できなくすることは明らかですが、実装する前に最適化が必要かどうかを常に確認する必要があります。

+0

スクロールもかなり遅いです。 – Kevin

+0

「セルを返すnil」を拡張できますか? – Kevin

+0

私は自分の答えを書き直しました。スクロールに関する質問は、この変更を行った後にのみ意味があります。 – Dondragmer