У меня есть TableView, загружающий пользовательскую ячейку и загружающий данные из строки JSON на сервер.Строка JSON анализируется в массив из 14 идентификаторов (id_array).
Если cell==nil
, то я использую [id_array objectAtIndex:indexPath.row]
, чтобы получить идентификатор и получить дополнительную информацию об этой строке с сервераи установите метки и изображение ячейки.
При запуске приложения UITableView загружает видимые строки [0,1,2,3,4] (высота ячейки составляет 70 пикселей).При прокрутке вниз по TableView строка [5] загружается и извлекает данные с сервера, но проблема заключается в том, что за этой точкой TableView повторяет эти 6 строк вместо того, чтобы запрашивать новые данные с сервера для новых строк ...
Но он запрашивает новые данные для строки [5], которые не видны (и не загружены) при первом запуске приложения.
У кого-нибудь есть идеи, почему это происходит?Спасибо!
РЕДАКТИРОВАТЬ: Вот мой метод cellForRowAtIndexPath
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CustomCell";
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
for (id currentObject in topLevelObjects) {
if ([currentObject isKindOfClass:[UITableViewCell class]]) {
cell = (CustomCell *)currentObject;
NSString *appsURL = [NSString stringWithFormat:@"http://myAPI.com?id=%@",[app_ids objectAtIndex:indexPath.row]];
NSLog(@"row -> %d | id -> %@",indexPath.row,[app_ids objectAtIndex:indexPath.row]);
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:appsURL]];
[cell updateAppInfoForCellWithRequest:request];
break;
}
}
}
// Configure the cell...
return cell;
}