1

1つのuiscrollviewに3つのuitableviewがあります。各uitableviewは完全な長さであり、スクロールできないため、外側のuiscrollviewはそれらを一緒にスクロールします。これは、uitableviewsがすべてのセルが表示され、すべてが前もって作成されると信じている場合を除いて、正常に機能します。これでも、各呼び出しにURLから非同期で読み込まれる画像ビュー(サムネイル)がある場合を除いて、許容されます。画像の読み込みを表示されているセルのみに制限する方法を理解しようとしていますが、それでもユーザーは外側のuiscrollviewをスクロールできます(したがって、uitableviewの動作を模倣しています)。

それぞれ3つのセルを表示するセルを持つ単一のテーブルの代替設計は(他の設計要件に基づいて)機能しないため、画像のダウンロードを制限する方法に固執しています。セルの最大数は125程度になります。uiscrollviewデリゲートには、セルをその場で更新できるようにするための十分な呼び出しがないようですが、私は間違っている可能性があります。何か案は?

4

3 に答える 3

0

TableViewDatasourceプロトコルは以下を実装します:-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

範囲内にない完全なテーブルの場合、テーブルビューポインタパラメータをアクティブに表示されているテーブルビューと比較し、非表示のテーブルビューをスキップするだけで、更新を制限できます。

セルの場合:同じスクロールビューに3を実装していることを考えると、これはより難しい問題です。これは、それぞれが標準で実装されている3つの個別のテーブルビューを実装した場合に少し簡単になります。このステートメントの理由は、Appleのプロトコルによって上記で実装された場合、ルーチンは実際には、現在画面上にある必要があるセルに対してのみ呼び出されるためです。このようにして、上記で定義されたルーチン内に画像背景ローダーを実装することができ、実際にあなたが望むものを手に入れることができます。私はこれを行いました、そしてそれは働きます。

別の答え:おそらく、カスタムテーブルビューを調べて、必要なすべての情報をこの単一のテーブルに組み込んで、上記の残りの半分を実装できるようにする単一のテーブルビューの独自のカスタムルックアンドフィールを定義する必要があります。

より良い答えを出すために、私はあなたが最終的に達成しようとしていることをより深く掘り下げる必要があると思います。

于 2012-05-23T15:44:10.913 に答える
0

UIScrollViewDelegate scrollViewDidScroll呼び出しを使用してから、scrollviewのcontentOffset.yを使用して、各テーブルビューのtableView indexPathsForRowsInRectを使用して表示されている(または表示されようとしている)セルのサムネイルをトリガーできます。私のセルサブクラスには、サムネイルのダウンロードをトリガーするメソッドがあります。

scrollViewDidScrollデリゲートメソッドは、スクロールするときにすべてのピクセルに対して呼び出されるようです。これは完璧です。遅すぎるかもしれないと思いましたが、今のところ大したことではありません。表示されているセルを並べ替える場合に常にチェックするようにするための唯一の問題。

于 2012-05-23T21:16:18.643 に答える
0

たぶん、カスタムチェックを行うだけです。tableViewが表示されていない場合(scrollViewの境界にないため)、tableViewの画像(またはセル)を「cellForRowAtIndexPath」にロードしないでください。

tableViewが表示されている場合は、reloadDataを呼び出して、画像を表示します。

これはすべて、scrollViewDelegateメソッドを使用して確認できます。

于 2012-05-23T15:29:53.870 に答える