2013-04-13 68 views
1

我正在使用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的新手,並且附有課程,所以請親切。 :)

回答

0

我解決了問題,把UIImageViews放在backgroundView中,而不是直接添加它們作爲子視圖。

我只能想象這個問題的方式引起的任何UICollectionView的的cellForRowAtIndexPath:方法抓取的圖像,因爲我給他們打電話,或LXReorderableCollectionViewFlowLayout的工作方式。

+0

你能解釋一下,你是什麼意思「..把UIImageViews在一個backgroundView ..」?謝謝 – MAMN84

+0

我用這個來解決類似的問題。在cellForItemAtIndexPath,我使用:cell.backgroundView = [[ALLOC的UIImageView] initWithImage:[UIImage的imageNamed:@ 「bg.png」]]; – dave