0

在我的应用程序中,我显示项目。我的JSON提要包含 50 个项目,但首先我想显示 25 个,当用户向下滚动到最后一行时,它需要加载更多项目。

我正在做:

下载JSON提要;

NSString *jsonString = [NSString 
                        stringWithContentsOfURL:[NSURL URLWithString:xmlDataUrl] 
                        encoding:NSStringEncodingConversionAllowLossy
                        error:nil];
SBJSON *parser = [[SBJSON alloc] init];
NSDictionary *results = [parser objectWithString:jsonString error:nil];
parser = nil;
[self setTableData:[results objectForKey:@"feed"]];

//

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 1;
}

//

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

并检测最后一行:

   if(indexPath.row == [self.tableData count] - 1) 
    {

        NSLog(@"Last Row");
    }

但它没有检测到最后一行。这是因为它正在下载的 JSON 包含超过 25 行吗?

我如何添加新行是[self.tableDate count] +1;可能的?

如果我确实返回[tableData count];它正在检测最后一行,但这些行已经填充了 100%,我需要显示 25/50 而不是 +1

4

1 回答 1

2

你在哪里调用第二个代码块?它在您的表委托的 willDisplayCell: 方法中吗?

在我的一个项目中,我有非常相似的代码

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == self.search.count && [tableView.indexPathsForVisibleRows containsObject:indexPath])
    {
        [self.search findMoreStuff];
    }
}

在为 self.search 创建的行之后附加了一个额外的行,所以在我的情况下,我正在检查 self.search.count,但您可能想查看 self.search.count-1

于 2012-04-13T20:58:51.260 回答