У меня есть UITableView
с двумя ячейками. Одна ячейка с изображением и одна без изображения. Когда ячейка без изображения отображается под ячейкой со снимком, все в порядке (Image 1). Но когда я сортирую список, а ячейка без изображения отображается над ячейкой с изображением, ячейка без изображения показывает то же изображение, что и другая ячейка (Image 2). Я борюсь с этой проблемой в течение нескольких дней, но я не могу понять, где проблема.UITableView Cell показывает неправильное изображение
Вот код для настройки изображения:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
Object *myObject = [[Datamodel sharedInstance] objectAtIndex:(int)indexPath.row];
cell.textLabel.text = myObject.name;
if([myObject.imageNames count] != 0 && !myObject.thumbnail)
{
myObject.thumbnail = [[NSString alloc] initWithString:[myObject.imageNames objectAtIndex:0]];
}
if(myObject.thumbnail)
{
NSLog(@"Setting thumbnail");
NSString *pathToImgData= [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents" ]stringByAppendingPathComponent:@"ImgData"];
NSMutableString *imgPath = [[NSMutableString alloc] initWithString:pathToImgData];
[imgPath appendString:@"/"];
[imgPath appendString: myObject.thumbnail];
UIImage* image = [UIImage imageWithContentsOfFile:imgPath];
UIImageView *imv = [[UIImageView alloc]initWithFrame:CGRectMake(8, 8, 128, cellHeight-16)];
imv.image = image;
[cell addSubview:imv];
}
return cell;
}
Что касается вывода на консоль только один объект входит в состояние if(myObject.thumbnail)
так только для ячейки, которые должны иметь изображение, набор изображений IST:
2015-03-01 ***** Cell with image *****
2015-03-01 --> Setting the image
2015-03-01 ***** Cell wihout image *****
2015-03-01 --> NOT setting the image
2015-03-01 ***** Cell without image *****
2015-03-01 --> NOT setting the image
2015-03-01 ***** Cell with image *****
2015-03-01 --> Setting the image
И код для сортировки списка:
-(void)sortList{
NSSortDescriptor *sortObjectName = [NSSortDescriptor sortDescriptorWithKey:@"objectName" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 caseInsensitiveCompare:obj2];
}];
[self.arrayData sortUsingDescriptors:@[sortObjectName]];
}
Почему у вашего TableView есть только один идентификатор для ячеек, т.е. «Ячейка». Должно быть два отдельных идентификатора: один для ячейки с изображением и один для ячейки без изображения. –
Клетки перерабатываются !!! –
У меня есть только один идентификатор ячейки, потому что пользователь может загрузить или удалить изображение, так что есть только один вид ячейки. – Frederik