自定义集合查看单元格显示错误的图像

时间:2013-10-07 18:03:08

标签: ios objective-c uicollectionview

我的捆绑资源中有大约80张图片。作为我的类别类的一部分,我有一个名为Image Name的属性,它包含我需要加载到图像视图中的图像的名称。我使用[UIImage imageNamed:Category.imageName]。这会在自定义表格单元格中加载正确的图像,但不会在集合视图单元格中加载。

表视图 - 索引路径中行的单元格

NSLog(@"Index = %d",indexPath.row);
CustomTableViewCell *cell = (CustomTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"cell"];
if(cell == nil){
    NSArray *nib = [[NSBundle mainBundle]loadNibNamed:@"CustomTableViewCell" owner:self options:nil];
    cell = [nib objectAtIndex:0];
}
Category *current = [self.editCategories objectAtIndex:indexPath.row];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
[[cell itemTitle]setText:current.title];
cell.backgroundColor = current.categoryColor;
cell.itemImage.image = [UIImage imageNamed:current.imageName];

return cell;

集合视图 - 索引路径中的行的单元格...

NSArray *catagoriesPulled = [[CategoryStore categoryStore]allCatagories];
Category *categoryRequested = [catagoriesPulled objectAtIndex:[indexPath row]];
CustomCollectionViewCell *cell = (CustomCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"CustomCollectionViewCell" forIndexPath:indexPath];
[cell setController:self];
cell.categoryImageView.image = nil;
cell.categoryTitle.numberOfLines = 1;
cell.categoryTitle.adjustsFontSizeToFitWidth = YES;
[[cell categoryTitle]setText:categoryRequested.title];
cell.categoryImageView.image = [UIImage imageNamed:categoryRequested.imageName];
NSLog(@"%@,%@",categoryRequested.title, categoryRequested.imageName);
cell.backgroundColor = categoryRequested.categoryColor;
return cell;

当我在模拟器上运行应用程序时,它可以很好地工作,但在实际设备上,集合视图单元的图像视图加载来自80的随机图像,但表视图加载了正确的图像。

任何帮助都会有用。谢谢。

2 个答案:

答案 0 :(得分:0)

创建自定义单元格时,您可能已更改了imageview的默认名称...即可,但请确保将其链接到xib文件的outlet部分。 (单击您的xib文件,然后单击自定义单元格,然后查看以确保其链接)

编辑: 根据你的评论,几乎听起来这是一个问题,你必须在应用程序上做一个干净(产品 - >干净)也从手机或模拟器删除应用程序。然后重建,新图像将出现。当您将图像更改为另一个图像但保留相同的文件名时,可能会发生这种情况。该文件有时可以缓存在设备上。

答案 1 :(得分:0)

当您执行以下操作时,您是否拥有正确的图像名称: NSLog(@"%@,%@",categoryRequested.title, categoryRequested.imageName);

您可能希望检查CustomCollectionView [cell setController:]中是否存在保留周期。这通常会导致一些奇怪的事情发生(特别是在内存较低的设备上,我发现)。您可能会保留这些单元格的额外实例及其子视图,这可能是导致错误图像出现的原因。