UiCollectionview allow single selection for specif

2020-01-20 09:50发布

问题:

In Collection view i am select the one cell but it is selected multiple cells.

- (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];
}
}

Check bellow my image link [1]: http://i.stack.imgur.com/WIgDH.png

回答1:

Here is the complete code which may satisfy your requirement for checkbox with collectionview

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



回答2:

When you clicked on second cell you are not changing image on first cell.

So make sure that if you clicked on any cell change the image as product-check.png and previous cell image as product-uncheck.png



回答3:

Do like this When Button is Pressed

-(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];
}
}

i hope this will solve your problem .