2012-08-30 31 views
0

我已採取2個圖像陣列等如何重新加載滾動視圖與iphone不同陣列

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

B = [ 「A.JPG」, 「B.JPG」, 「C.JPG」]。

然後以顯示圖像添加與滾動視圖的PageControl (在的PageControl頁數會)

[陣列計數]

並且還滾動視圖的內容大小也取決於[array count]

scroll.width * array.count

這裏,如果有4頁,那麼3將被加載到內存中,並且在滾動之前的圖像將被卸載。

1)最初顯示陣列圖像。 2)然後點擊按鈕,我用B數組長度替換scrollview.contentSize,pagecontrol.numberof頁面,並卸載之前由數組加載的圖像。
3)要顯示B排列,滾動視圖contentsize將需要的是小,並且具有的頁作爲4.So數,我再次通過

scrollView.contentSize = CGSizeMake(scrollView.frame.size重置我滾動視圖。寬度* [數組數],scrollView.frame.size.height);

然後我滾動到B陣列中的最後一張圖片,最後一張圖片後,當我嘗試滾動到下一張圖片時,它顯示爲未正確卸載的陣列圖像的「q.jpg」圖像。

因此,如何從不同的圖像數組重新加載時從滾動視圖卸載所有圖像。

謝謝。

回答

0

還沒有測試過,也許你可以使用for循環來設置所有子視圖的圖像屬性爲零?

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]; 
} 

這會從您的滾動視圖中刪除所有子視圖。讀取新圖像陣列時,您需要重新添加所有圖像視圖。

+0

我已經測試了上面的代碼,但沒有複製我的問題。 – iKT

+0

你也可以試試我編輯的答案。 – Zhang

0

這實質上就是UITableViewController的用途。 您可以動態控制單元格的數量和順序(在您的自定義單元格內的圖像中),並在底層數據發生更改時調用表視圖上的reloadData。

它也爲您嵌入了UIScrollView,因此您不必執行艱苦的工作。

相關問題