2010-04-07 129 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現在很流暢,「空白頁」問題消失了。