0

次のような2つの画像配列を取得しました

A=["l.jpg","m.jpg","n.jpg","p.jpg","q.jpg","r.jpg"]

B=["a.jpg","b.jpg","c.jpg"].

次に、画像を表示するために、ページコントロールでスクロールビューを追加しました(ページコントロールのページ数は になります)

[配列数]

[array count]また、スクロールビューのコンテンツサイズもIEに依存します

scroll.width * array.count

ここで、4 ページある場合は 3 ページがメモリにロードされ、スクロールすると前の画像がアンロードされます。

1)A配列画像の初期表示。2)次に、ボタンをクリックすると、 scrollview.contentSize 、 pagecontrol.numberof ページを B 配列の長さに置き換え、以前に A 配列によってロードされた画像もアンロードします。
3)B配列を表示するには、スクロールビューのコンテンツサイズを小さくし、ページ数を4にする必要があります。

scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * [配列数], scrollView.frame.size.height);

次に、B配列の最後の画像までスクロールしました。最後の画像の後、次の画像にスクロールしようとすると、適切にアンロードされなかったA配列画像の「q.jpg」画像として表示されます。

したがって、異なる画像配列からリロードするときにスクロールビューからすべての画像をアンロードする方法。

ありがとう。

4

2 に答える 2

0

これは本質的に UITableViewController の目的です。セルの数と順序を動的に制御し (カスタム セル内の画像の場合)、基になるデータが変更されたときにテーブル ビューで reloadData を呼び出すだけです。

また、UIScrollView が組み込まれているため、難しい作業を行う必要はありません。

于 2012-09-04T07:16:26.007 に答える
0

テストしていませんが、for ループを使用してすべてのサブビューのイメージ プロパティを nil に設定できますか?

for(int i = 0; i < previousImageArray.count; i++)
{
   UIImageView *imageView = [[myScrollView subviews] objectAtIndex:i];

   imageView.image = nil;
}

それでもうまくいかない場合は、いつでもサブビューを完全に削除できます。

// get all subviews inside your scrollview into an array
NSArray *subviews = [myScrollView subviews];

// loop through array, for each image view subview in your scrollview
// remove it from the superview (superview is your scroll view in this case)
for(int i = 0; i < subviews.count; i++)
{
    UIImageView *imageView = (UIImageView *)[subviews objectAtIndex:i];

    [imageView removeFromSuperview];
}

これにより、scrollView からすべてのサブビューが削除されます。新しい画像配列を読み取るときは、すべての画像ビューを再度追加する必要があります。

于 2012-08-30T09:09:45.173 に答える