UICollectionView数据正在重新排序

时间:2013-04-13 22:34:15

标签: ios uikit uicollectionview

我正在使用带有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的新手,它是附带的类,所以请善待。 :)

1 个答案:

答案 0 :(得分:0)

我通过将UIImageViews放在backgroundView中来修复问题,而不是直接将它们添加为子视图。

我只能想象这个问题是由UICollectionView的cellForRowAtIndexPath:方法在我调用它时抓取图像的方式引起的,或LXReorderableCollectionViewFlowLayout的工作方式。