如何在 UICollectionView 上预先选择单元格

Posted

技术标签:

【中文标题】如何在 UICollectionView 上预先选择单元格【英文标题】:How to pre select cell on UICollectionView 【发布时间】:2013-10-11 09:01:43 【问题描述】:

我正在做一个项目,我想从“已保存的照片”和名为“myAlbum”的相册中读取图像,并将它们列在 UICollectionView 上,并提供这样的多项选择

http://screencast.com/t/Y8VCgrWbH

当用户单击 myAlbum 相册中的 myAlbum 图像时,当用户单击显示的画廊中的画廊图像时,每次用户单击两个按钮之一时,我都会重新加载 UIcollectionView 数据。我还将选定的图像保存在可变数组中,如果未选中则将其删除。我想将图像与选定的数组进行比较,然后显示已在

中选择的单元格
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 

当用户同时浏览两个按钮时。

【问题讨论】:

【参考方案1】:

尝试保存您要选择的单元格,然后调用此委托方法:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

把它放在viewWillAppear 中。如果您已保存数据,您应该能够找出需要选择的索引。

【讨论】:

【参考方案2】:

首先,授权你的collection view的多选:

self.collectionView.allowsMultipleSelection = YES;

之后,实现两个委托方法:

#pragma mark – UICollectionViewDelegate
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

    // Update Cell Selection
    [_selectedItems addObject:[_data objectAtIndex:indexPath.item]];


- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath

    // Update Cell Selection
    [_selectedItems removeObject:[_data objectAtIndex:indexPath.item]];

_data 是包含所有对象的数组,_selectedItems 是一个 NSMutableArray,用于保存当前是否选中。

在此处修改单元格的外观:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 

最后,想了解更多,可以看here。

【讨论】:

以上是关于如何在 UICollectionView 上预先选择单元格的主要内容,如果未能解决你的问题,请参考以下文章

如何限制 UICollectionView 中的可选单元格

预先创建 UICollectionView 单元格 - 布局问题

如何最好地使用 php 预先填充单选按钮选择?

UICollectionView 多选复用问题

PHP JQuery Checkbox - 如果复选框被预先选中,它不会在未选中时删除“选中”属性

选中时更改 UICollectionView 单元格的背景和标签颜色