加载更多单元格“willDisplayCell”问题

时间:2011-09-12 01:04:52

标签: iphone xml uitableview load

我遇到了willDisplayCell的问题,它不会停止从网址中获取Xml 我的代码:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return [itemsToDisplay count] + 1;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}


if (indexPath.row == [itemsToDisplay count]) {
    cell.textLabel.text = @"Load More...";


} else {
    MWFeedItem *item = [itemsToDisplay objectAtIndex:indexPath.row];
    cell.textLabel.text = item.title;
}

    return cell;
}




- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
 {
      if (indexPath.row == [itemsToDisplay count]) {

    // Parse
    NSURL *feedURL = [NSURL URLWithString:@"http://gdata.youtube.com/feeds/api/users/RayWilliamJohnson/uploads?v=2&alt=rss&sort_field=added&start-index=21&max-results=20"];
    feedParser = [[MWFeedParser alloc] initWithFeedURL:feedURL];
    feedParser.delegate = self;
    feedParser.feedParseType = ParseTypeFull; // Parse feed info and all items
    feedParser.connectionType = ConnectionTypeAsynchronously;
    [feedParser parse];



    [self.tableView reloadData];
}    
}

它看起来像是一种不停止获取xml的循环

所以我怎么能解决它所以我只会打电话一次?

TNX

1 个答案:

答案 0 :(得分:1)

问题是你在 tableView:willDisplayCell:中调用了 reloadData reloadData 将导致每个UITableViewCell再次被绘制,意味着将为屏幕上可见的每个单元格调用willDisplayCell。在我看来,就像你在那里有一个无限循环。

tableView:willDisplayCell:绝对是进行XML解析的错误地方。 willDisplayCell应该只用于准备UI。我不能肯定地说,但是XML解析的更好的地方可能是你的视图控制器的 init 方法。