简体   繁体   中英

UiCollectionview allow single selection for specific cell

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

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

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

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

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 .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM