UiCollectionview 允许对特定单元格进行单选

Posted

技术标签:

【中文标题】UiCollectionview 允许对特定单元格进行单选【英文标题】:UiCollectionview allow single selection for specific cell 【发布时间】:2016-10-06 05:17:36 【问题描述】:

在集合视图中,我选择了一个单元格,但它被选中了多个单元格。

- (UICollectionViewCell *)collectionView:(UICollectionView      *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
CustomCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
    cell.Selectitems.tag=indexPath.row;
[cell.Selectitems addTarget:self action:@selector(selectitem:) forControlEvents:UIControlEventTouchUpInside];

-(void)selectitem :(UIButton *)sender
if ([sender isSelected]) 
    [sender setSelected: NO];
    cell.check = YES;
     [cell.Selectitems setBackgroundImage:[UIImage imageNamed:@"product-uncheck.png"] forState:UIControlStateNormal];
else
        [sender setSelected: YES];
        cell.check = YES;
      [cell.Selectitems setBackgroundImage:[UIImage imageNamed:@"product-check.png"] forState:UIControlStateNormal];


检查下面我的图片链接 [1]:http://i.stack.imgur.com/WIgDH.png

【问题讨论】:

你能再添加一些代码吗 在选择项按钮下,我选择了一个单元格,但它也被选中了。 我明白,对于您的代码我们找不到问题 if ([sender isSelected]) [sender setSelected: NO];细胞检查=是的; [cell.Selectitems setBackgroundImage:[UIImage imageNamed:@"product-uncheck.png"] forState:UIControlStateNormal]; else [发件人 setSelected: YES];细胞检查=是的; self.selectedIndexPath=indexPath; [cell.Selectitems setBackgroundImage:[UIImage imageNamed:@"product-check.png"] forState:UIControlStateNormal]; 在 cellForItemAtIndexPath 中也可以做同样的事情 【参考方案1】:

这是完整的代码,可以满足您对collectionview复选框的要求

https://www.dropbox.com/s/e43zk55surlwjlk/CollectionCkeck.zip?dl=0

【讨论】:

【参考方案2】:

当您单击第二个单元格时,您不会更改第一个单元格上的图像。

因此,请确保如果您单击任何单元格,请将图像更改为 product-check.png,将之前的单元格图像更改为 product-uncheck.png

【讨论】:

【参考方案3】:

按下按钮时这样做

-(void)selectitem :(UIButton *)sender

//Get Index path from Button Tag
  NSIndexPath *indexPath = [NSIndexPath indexPathForRow:sender.tag inSection:0];

// get Cell instance and than do whatever you want with Cell items
CustomCell *cell = *cell = [self.collectionView cellForItemAtIndexPath:indexPath];

if ([cell.Selectitems isSelected]) 
    [cell.Selectitems setSelected: NO];
    cell.check = YES;
     [cell.Selectitems setBackgroundImage:[UIImage imageNamed:@"product-uncheck.png"] forState:UIControlStateNormal];
else
        [cell.Selectitems setSelected: YES];
        cell.check = YES;
      [cell.Selectitems setBackgroundImage:[UIImage imageNamed:@"product-check.png"] forState:UIControlStateNormal];


我希望这能解决你的问题。

【讨论】:

CustomCell *cell = *cell = [self.collectionView cellForItemAtIndexPath:indexPath];这里显示这个错误:Assigning to 'CustomCell' from in compatible type 'UICollectionViewCell * _Nullable' CustomCell *cell = [self.collectionView cellForItemAtIndexPath:indexPath];对不起那个错误,,,,我已经写了两次“单元格”... id 这比将单元格转换为 CustomCell 给出错误 感谢您为我花费的宝贵时间。已经有人回答了。

以上是关于UiCollectionview 允许对特定单元格进行单选的主要内容,如果未能解决你的问题,请参考以下文章

如何在 willDisplay 单元格回调中访问 UICollectionView 中的特定单元格

无法在 uicollectionview、UICollectionView 的特定 indexPath.row 处为单元格设置标题

在 UICollectionView 中为特定单元格设置动画

页面加载时滚动后如何访问 UICollectionView 中的特定单元格?

UICollectionView 滚动特定长度

如何使用 viewForSupplementaryElementOfKind 显示 UICollectionView 的特定单元格 - swift