如何在iphone中使用不同的数组重新加载scrollView
Posted
技术标签:
【中文标题】如何在iphone中使用不同的数组重新加载scrollView【英文标题】:How to reload scrollView with different array in iphone 【发布时间】:2012-08-30 08:47:26 【问题描述】:我已经拍摄了 2 个图像数组,例如
A=["l.jpg","m.jpg","n.jpg","p.jpg","q.jpg","r.jpg"]
和
B=["a.jpg","b.jpg","c.jpg"].
然后为了显示图片已经添加了带有pagecontrol的scrollview (页面控件中的页面数将为)
[数组计数]
而且滚动视图的内容大小也取决于[array count]
,即
scroll.width * array.count
这里,如果有 4 个页面,那么 3 个页面将被加载到内存中,并且在滚动之前的图像将被卸载。
1) 最初显示 A 数组图像。 2)然后单击按钮,我将 scrollview.contentSize , pagecontrol.numberof 页面替换为 B 数组长度,并卸载先前由 A 数组加载的图像。 3) 要显示 B 数组,scrollview contentsize 需要很小并且页数为 4.所以,我再次通过
重置我的scrollviewscrollView.contentSize = CGSizeMake(scrollView.frame.size.width * [数组计数],scrollView.frame.size.height);
然后我滚动到 B 数组中的最后一个图像,在最后一个图像之后,当我尝试滚动到下一个图像时,它显示为 A 数组图像的“q.jpg”图像,该图像未正确卸载。
那么,当从不同的图像数组重新加载时,如何从滚动视图中卸载所有图像。
谢谢。
【问题讨论】:
【参考方案1】:没有测试,或许可以用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];
这将从您的滚动视图中删除所有子视图。当您读取新的图像数组时,您需要重新添加所有图像视图。
【讨论】:
【参考方案2】:这本质上就是 UITableViewController 的用途。 您可以动态控制单元格的数量和顺序(在您的情况下是自定义单元格内的图像),并且当基础数据发生更改时,只需在表格视图上调用 reloadData。
它还为您嵌入了 UIScrollView,因此您不必费力。
【讨论】:
以上是关于如何在iphone中使用不同的数组重新加载scrollView的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Iphone SDK 中基于单个数组对多个数组进行排序