У меня есть табличное представление с пользовательскими ячейками, в каждой из которых есть изображения и некоторый текст, который необходимо проанализировать с веб-страницы.У меня есть и очередь операций, которая получает данные со страницы и вызывает метод (void)addLoadedImageAndExcerpt:(NSString *)imgExc
в tableviewcontroller после загрузки данных каждой страницы и сохраняет данные в 2 массивах.Мне нужно, чтобы каждая ячейка обновлялась, как только изображение и текст, связанный с ней, загружались в эти 2 массива (называемые «articleExcerpts» и «imageDataObjects»).
метод следующий:
- (void)addLoadedImageAndExcerpt:(NSString *)imgExc {
NSArray *imgAndExcerpt = [imgExc componentsSeparatedByString:@"{|}"];
[articleExcerpts addObject:[imgAndExcerpt objectAtIndex:1]];
NSData * imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: [imgAndExcerpt objectAtIndex:0]]];
[imageDataObjects addObject:imageData];
//count how many rows have been loaded so far.
loadedCount ++;
[self.table reloadData];//table is a UITableView
[imageData release];
}
проблема в том, что я не могу изменить ячейки, пока они на экране.Когда я прокручиваю, они показывают правильные данные, пока они на экране, я не могу заставить их измениться.Я попробовал методы, обозначенные здесь и здесь , но они не работают.Я попытался вызвать tableView:cellForRowAtIndexPath:
для соответствующей строки и изменить переменные, но это ничего не решило, потому что этот метод, кажется, создает новую ячейку каждый раз, когда вызывается, и не получает существующие (я выложукод для этого метода еще ниже).
Использование [self.table reloadData]
в том виде, в котором оно у меня есть, теперь, похоже, тоже ничего не делает, что меня действительно смущает ...
мой tableView:cellForRowAtIndexPath:
метод (держу парипроблема в том, что я не уверен, что правильно создал свои пользовательские ячейки)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CustomizedCell";
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;
break;
}
}
}
// Configure the cell...
//title
cell.titleString = [titles objectAtIndex:indexPath.row];
//date
cell.dateString = [dates objectAtIndex:indexPath.row];
//Photo. check if imageDataObjects array is complete up to the current row yet
if (loadedCount > indexPath.row) {
if ([imageDataObjects objectAtIndex:indexPath.row] != @"NA") {
cell.imageData = [imageDataObjects objectAtIndex:indexPath.row];
} else {
cell.imageData = NULL;
}
}
//Excerpt. check if loadedCount array is complete up to the current row yet
if (loadedCount > indexPath.row) {
cell.exerptString = [articleExcerpts objectAtIndex:indexPath.row];
}
return cell;
}
что мне не хватает?