我正在使用带有LXReorderableCollectionViewFlowLayout修改版本的UICollectionView,并且我最后两个单元格中的数据正在混淆。
每个单元格中显示2个单独的图像,标签位于下方,当我离开viewController并返回时,我调用reloadData。每次调用时,单元格中的图像都会交换。但是,标签保留在同一个地方。
这是我用来绘制我遇到问题的单元格的代码。
SettingsTile *setTileD = (SettingsTile *)[collectionView dequeueReusableCellWithReuseIdentifier:@"settingsReuse" forIndexPath:indexPath];
NSString *songTitle = [colors objectAtIndex:indexPath.row];
MPMediaQuery *query = [MPMediaQuery songsQuery];
[query addFilterPredicate:[MPMediaPropertyPredicate predicateWithValue:songTitle forProperty:MPMediaItemPropertyTitle]];
if ([query items].count > 0)
{
MPMediaItemArtwork *art = [[[query items] objectAtIndex:0] valueForProperty:MPMediaItemPropertyArtwork];
UIImage *im = [art imageWithSize:CGSizeMake(145, 145)];
setTileD.titleLabel.text = songTitle;
setTileD.titleLabel.textColor = [UIColor whiteColor];
UIImageView *imView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 145, 145)];
imView.image = im;
[setTileD addSubview:imView];
[setTileD sendSubviewToBack:imView];
return setTileD;
}
else
{
return nil;
}
第一次运行应用程序时,图像会混淆,可能是因为在首次显示viewController时也会调用viewDidAppear,并且当用户返回时,图像不会混淆。这个过程重演。
reloadData被正常调用(例如[collectionView reloadData];)。
我是UICollectionView的新手,它是附带的类,所以请善待。 :)
答案 0 :(得分:0)
我通过将UIImageViews放在backgroundView中来修复问题,而不是直接将它们添加为子视图。
我只能想象这个问题是由UICollectionView的cellForRowAtIndexPath:方法在我调用它时抓取图像的方式引起的,或LXReorderableCollectionViewFlowLayout的工作方式。