iPhone - 在一个UIView中绘制大量数据

时间:2010-02-03 20:28:13

标签: iphone uiview uiscrollview

我试图将UIView中的大量数据绘制为UIScrollView的子视图。为了克服围绕巨大的UIViews的内存限制,我计划,一旦scrollview的偏移量达到最大或最小偏移量,用新数据重绘视图,如果达到最小值,则用较小的“x”值或签证反之亦然,然后将视图的偏移增加到其当前位置的相反位置(即MAX - > MIN和MIN - > MAX)。我尝试使用以下代码。

- (void)scrollViewDidScroll:(UIScrollView *) scrollViewer {

 CGPoint p = scrollViewer.contentOffset;

 if(p.x==0){
     if(appDel.windownum>0){
         appDel.windownum--;
         [graphview setNeedsDisplay];
     }
 }

 if(p.x==1000){
     if(appDel.pcont>appDel.windownum*100){
         appDel.windownum++;
         [graphview setNeedsDisplay];
     }
 }
}

appDel.windownum是视图当前显示的图表部分的参考。如果它等于零,则显示前100个值。如果它是1,接下来的一百,等等。在appDelegate中重置此变量后,将使用新的索引值重新绘制图形,并重置scrolloffset。但是,运行此代码时,程序崩溃。有错误:

  

TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION

它在模拟器中崩溃了。我做错了什么?

XCode 3.2.1 iPhone固件3.1.3

2 个答案:

答案 0 :(得分:0)

它会使模拟器崩溃。产生的错误是:TERMINATING_DUE_TO_UNCAUGHT_EXCEPTION。

答案 1 :(得分:0)

我没有看到您的代码出现问题(需要更多详细信息),但我确实对显示大图的问题有设计建议。

我最近迷上了使用iPhone上的表格。您可以在表格中显示任何内容,并且可以保存任何视图。听起来你正在显示一个很大的长图,你可以在一个表中执行此操作,让表为您处理显示。

您需要创建一个可以显示图表切片的自定义UITableViewCell。它会像你现在使用的视图一样工作,除了它会在图表中显示一个固定的范围。 (您的数据模型必须能够将数据切割成行/范围。)然后显示没有行的单元格。

这样,tableview只处理绘制图表中立即显示的那些部分。这将有助于记忆和响应。从用户的角度来看,它看起来像一个任意长的滚动图。