在滚动时将内容动态加载到scrollview中

时间:2010-04-07 08:53:46

标签: iphone objective-c

我的滚动视图遇到问题(水平,启用分页,可以是50页或更多) 我想要做的是,当用户水平滚动时,将内容加载到scrollView的内容视图上(因为最初加载所有内容都需要很长时间)。

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

问题是: 当它预加载页面时,“滚动运动”受到干扰。屏幕没有完全闪烁,但滚动动画的平滑性受到严重影响。

代码中的

- (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];
    }
}   

}

可能我必须在这里进行一些设计更改。我相信你们中有些人过去也遇到过类似的问题。 非常感谢任何帮助/ tipps或链接

提前感谢您的帮助

SAM

1 个答案:

答案 0 :(得分:0)

好的,我有点想出了解决问题的方法。

我将preLoadPageNumber-方法更改为:

-(void)preLoadPageNumber:(NSNumber*)param

只是因为我在ScrollViewDidScroll中调用了一个helper方法,并且说helperMethod看起来像这样:

-(void)performPreLoadAfterDelay

{

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

}

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