滚动时UICollectionView选择丢失

时间:2014-01-15 00:06:14

标签: ios objective-c uicollectionview uicollectionviewcell

我有一个简单的UICollectionView启动并运行,因此您可以选择一个单元格然后保存您的选择。但猜猜怎么了?我有问题!

在屏幕上滚动选定的单元格并重新打开后,它将失去其选择。表面上非常简单。我怎么能阻止这个?

这与细胞再利用有关吗?这是我的代码:

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"AircraftConfigurationCell";
    SLAircraftConfigurationCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];

    //Customise cell...

    return cell;
}

1 个答案:

答案 0 :(得分:1)

您是否有可能来自包含数据模型的数组的数据源?

如果是这样,那么你将有一个良好的开端,并且可以立即解决这种选择间歇性行为!

在您的数据模型.h文件中创建一个property,如此property (nonatomic, retain) BOOL selectedState;,并在.m文件中初始化selectedStateFALSE数据对象的init方法。

在UICollectionView的didSelect方法中完成后,将dataObject的selectedState设置为与该单元/项索引关联的YES

然后最后在您的cellForItemAtIndexPath方法中,确保对要为selectedState属性设置cellItem的dataModel实例执行if检查。如果设置为“NO”,则将selectionStyle设置为none,否则将其设置为yes。

我以前在滚动时选择会丢失之前遇到问题,但是现在它被管理并且结果是持久的。