Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在UIScrollview中管理大量昂贵的UIView_Iphone_Cocoa Touch_Uikit_Uiscrollview - Fatal编程技术网

Iphone 在UIScrollview中管理大量昂贵的UIView

Iphone 在UIScrollview中管理大量昂贵的UIView,iphone,cocoa-touch,uikit,uiscrollview,Iphone,Cocoa Touch,Uikit,Uiscrollview,我正在设计的iPad应用程序将显示一个全屏UIScrollView,允许用户快速浏览大量(200或更多)的图像-大小相同,无需分页。图像将从web加载,并且没有预定义的顺序。现在我要做的是 我加载并解析一个XML提要,其中包含对我加载的图像的引用,以及我在另一面显示的元数据。我将所有这些存储在单独的对象中,这些对象管理前视图和后视图,并在它们之间翻转。 所创建对象的视图放置在网格中的UIScrollView上,首先显示一个占位符图像。 一旦在对象中设置了图像URL,它就会使用“NSURLConn

我正在设计的iPad应用程序将显示一个全屏
UIScrollView
,允许用户快速浏览大量(200或更多)的图像-大小相同,无需分页。图像将从web加载,并且没有预定义的顺序。现在我要做的是

  • 我加载并解析一个XML提要,其中包含对我加载的图像的引用,以及我在另一面显示的元数据。我将所有这些存储在单独的对象中,这些对象管理前视图和后视图,并在它们之间翻转。
  • 所创建对象的视图放置在网格中的UIScrollView上,首先显示一个占位符图像。
  • 一旦在对象中设置了图像URL,它就会使用“NSURLConnection”获取图像本身。当图像完全加载时,它将替换占位符图像。 这对于数量有限的对象(即使UI有时没有响应)来说已经足够好了,但它不能放大。当我加载超过60-70个自定义视图控制器时,应用程序崩溃。当然,其中大部分都是屏幕外的——每个图像都是280x280,因此在任何给定时间只有12个图像可见


    我想我需要找到一种方法来保持在后台加载数据,但只保留那些实际位于
    UIScrollView
    可见范围上(或附近)的视图。我需要使用核心数据来管理吗?如果您处理过类似的问题,我很想听听您是如何解决的-我猜这是一个很常见的问题。

    您不需要加载60-70个视图控制器。屏幕上只显示视图控制器的数量,当视图向下滚动时,将控制器置于顶部,将图形更改为已存储的图形,并将其置于底部

    您正在加载的其他文件可以在后台下载。您不需要核心数据(尽管您可以在需要时使用它)

    看看滚动视图上的苹果视频,它们涵盖了这一点。

    我就是这样做的。
    当时我只显示了3个UIView,每次用户前进时,我卸载第一个UIView并加载一个新的UIView。用户没有注意到这一点,因为下一个屏幕和上一个屏幕总是被加载(3UIViews)

    @Peter Hosey-我添加了核心数据标签,因为我正在考虑为此使用核心数据,因此这个问题间接与(数据的适当性)有关CD.Core数据的使用负责应用程序的模型部分。管理视图(包括重用视图控制器)不是一项模型任务。谢谢Woody-你指的是WWDC10视频吗?我这里没有iTunes,但有一组早期的WWDC(可能是08)可以深入地进行管理。看一看表视图上的视频,它们深入研究,非常容易理解,需要演示概念和代码。我最后做的有些类似,但我不确定结果是否相同。我现在要做的是在管理滚动视图的视图控制器中保留一组整数变量minVisibleColumn、maxVisibleColumn、minVisibleRow和maxVisibleRow。这些将在scrollViewDidScroll:中更新。封面对象(管理滚动视图上的各个视图)在初始化并观察这些值时被指定一行和一列。然后,它们根据可见性在滚动视图中添加和删除自己。作为一个解决方案,这有意义吗?你是如何跟踪它的?滚动是否足够平滑?我正在努力寻找解决方案,因为我的滚动速度非常慢。