我正在使用 UICollectionView 和 LXReorderableCollectionViewFlowLayout 的修改版本,并且我最后两个单元格中的数据被混淆了。
每个单元格中显示 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;
}
应用程序第一次运行时,图像混合在一起,可能是因为 viewDidAppear 在第一次显示 viewController 时也被调用,而当用户返回它时,图像并没有混合在一起。这个过程不断重复。
reloadData 被正常调用(例如 [collectionView reloadData]; )。
我是 UICollectionView 的新手,它是附带的课程,所以请善待。:)