Jes*_*ica 8 iphone uitableview uiscrollview ios
下面是我用来获取和解析Feed的不同页面的函数.
- (void)getFeed:(NSInteger) pageNumber
{
collectedData = [[NSMutableData alloc] init];
NSString *urlStr =[NSString stringWithFormat:@"http://sitename.com/feed/?paged=%d", pageNumber];
NSURL *url = [NSURL URLWithString:urlStr];
NSURLRequest *req = [NSURLRequest requestWithURL:url];
conn = [[NSURLConnection alloc] initWithRequest:req delegate:self startImmediately:YES];
}
Run Code Online (Sandbox Code Playgroud)
当用户向下滚动到tableview的底部时,我使用以下函数来访问feed的第二页,依此类推,递增计数器:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
float endScrolling = scrollView.contentOffset.y + scrollView.frame.size.height;
if (endScrolling >= scrollView.contentSize.height)
{
counter ++;
[self getFeed:counter];
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,当它不是在已经获取的项目下面加载它时,它会重新加载tableview以显示新的页面项目,而旧的页面项目将消失.我想在现有页面下面加载新的页面项目以进行无限滚动.我怎样才能做到这一点?
回答自己的问题感觉很糟糕,但在另一个论坛的帮助下,我找到了答案。
表视图控制器与可变数组不同步,因此我创建了另一个并附加两个数组。
Step1:我创建了一个属性
@property (nonatomic, readonly) NSMutableArray *moreItems;
Run Code Online (Sandbox Code Playgroud)
Step2: 在调用 fetchEntries 之前初始化 ViewDidLoad 中的数组
moreItems = [[NSMutableArray alloc] init];
Run Code Online (Sandbox Code Playgroud)
第3步:在connectionDidFinishLoading中,我将新数组“moreItems”附加到先前的数组“items”
[moreItems addObjectsFromArray:[channel items]];
Run Code Online (Sandbox Code Playgroud)
Step4:将 numberOfRowsInSection 中的数据源更改为
return [[channel items] count];
Run Code Online (Sandbox Code Playgroud)
到新数组
return [moreItems count];
Run Code Online (Sandbox Code Playgroud)
然后在 cellForRowAtIndexPath 中使用新数组
RSSItem *item = [moreItems objectAtIndex:[indexPath row]];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4698 次 |
| 最近记录: |