0

我有一个稍微复杂的表格问题,我设置了表格,并给它部分的数量,以及每部分的行数。我实际上没有单元格的任何数据,此时它们只是空的。

我想要做的是当用户滚动单元格时,进行 API 调用并获取该单元格的数据,再加上接下来的 50 个单元格。

API 调用是异步的,一旦我进行了调用,我不想在用户滚动时为下一个单元格调用它,因为我知道数据很快就会返回。

有什么想法或建议吗?

- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableView *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    // Pull data for next 50 table view cells
    // The data will come from a server

    return cell;
}
4

1 回答 1

4

这听起来像是一个很好的机会,可以引入一个单独的服务来管理您的网络请求,而不是将该行为嵌入到表的数据源中间。如果您的数据源请求此服务尝试加载接下来的 50 个单元,则该服务可以决定它是否应该实际启动新的网络请求。让该服务的实例跟踪正在进行的请求以及它们预期覆盖的索引路径范围,以便它可以决定-shouldLoadItemsStartingAtIndexPath:样式消息何时应导致新的网络请求。

这是您正在寻找的那种模式,还是您对您的方法有更具体的问题?

于 2013-06-25T20:38:30.877 回答