2010-04-07 177 views
0

我面临一个问题,我的滚动视图(水平,启用分页,可以是50页或更多) 我想要做的是,加载内容到scrollView的内容 - 视图用户正在水平滚动(因为最初加载所有内容需要很长的时间)。动态加载内容到滚动视图,而滚动

我做的是: 每次scrollViewDidScroll发生我检查是否需要加载额外的内容。如果是,则会创建一个新的“页面”并将其添加到正确位置的scrollViews contentview中。

问题是: 虽然它预载了一个页面,但“滚动移动”却受到干扰。屏幕不完全闪烁,但滚动动画的平滑度受到严重影响。

的代码是:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
[self preLoadPageNumber:self.currentPageIndex + 2];} 

-(void)preLoadPageNumber:(int)pageNumber{ 
NSMutableArray *tmpMovies; 
VoDPage *pageView; 

if(pageNumber < [self getAmountOfPages]) 
{  
    pageView = [pageViewControllers objectAtIndex:pageNumber]; 

    if((NSNull*)pageView == [NSNull null]) 
    { 
     tmpMovies = [[NSMutableArray alloc] initWithCapacity:6]; 

     for(int o = ((pageNumber) * 6); o < ((pageNumber+1)*6); ++o) 
     { 
      @try { 
       [tmpMovies addObject:[movies objectAtIndex:o]]; 
      } 
      @catch (NSException * e) { 
       break; 
      } 

     } 
     pageView = [[VoDPage alloc] initWithContent:tmpMovies andNavCtrl:navCtrl]; 
     pageView.view.frame = CGRectMake(((pageNumber) * 320)-8 , 0, 320, 332); 
     if(editModeEnabled) 
      [pageView enableEditMode]; 

     [scrollView addSubview:pageView.view]; 

     [pageViewControllers replaceObjectAtIndex:pageNumber withObject:pageView]; 
    } 
} 

}

可能我要在这里做一些设计变更。我相信你们当中有些人在过去面临类似的问题。 任何帮助/窍门或链接是极大的赞赏提前

感谢您的帮助

SAM

回答

0

好吧,我有点想出了一个变通方法,做的伎俩。

我改变了preLoadPageNumber-方法是这样的:

-(void)preLoadPageNumber:(NSNumber*)param 

,只是因为我所说的辅助方法,从内ScrollViewDidScroll说helperMethod看起来是这样的:

-(void)performPreLoadAfterDelay 

{

[self performSelector:@selector(preLoadPageNumber:) withObject:[NSNumber numberWithInt:self.currentPageIndex +1] afterDelay:0.001]; 

}

当滚动速度非常快(“空白”页面出现)时,从ScrollViewDidScroll方法内调用performSelector方法不起作用。 我真的不知道为什么,但helperMethod的技巧奏效。 Annimation现在很流畅,“空白页”问题消失了。