UICollectionViewCell с переключателем UIButton - один переключатель RadioButton, выбранный одновременно - PullRequest
0 голосов
/ 10 июня 2019

У меня есть UICollectionView с UIButton в качестве переключателя в UICollectionViewCell.xib.

Мне нужно выбрать один переключатель RadioButton за раз, если был нажат следующий, предыдущий должен быть отменен.Я буду признателен за помощь.

//Loading radio button when view loads
-(void)setRadioButton{

    if (!self.product.isSelectedCell) {
        [self.radioBtn setBackgroundImage:[UIImage imageNamed:@"radio-button"] forState:UIControlStateNormal];
    }
    else
    {
        [self.radioBtn setBackgroundImage:[UIImage imageNamed:@"radio-button-select"] forState:UIControlStateNormal];
    }
}

//Action for radio button
- (IBAction)radioBtnAction:(UIButton*)sender {

    if([self.radioBtn isSelected]==YES)
    {
      [self.radioBtn setBackgroundImage:[UIImage imageNamed:@"radio-button-select"] forState:UIControlStateNormal];

    }
       else{
//always calls else 
            [self.radioBtn setBackgroundImage:[UIImage imageNamed:@"radio-button"] forState:UIControlStateNormal];

        }
    }

1 Ответ

0 голосов
/ 11 июня 2019
Use this code in cellForRowAtIndexPath

        UIButton *radioButton = (UIButton *) [cell.contentView viewWithTag:kRadioButtonTag]; // Radio button
        [radioButton setImage:[UIImage imageNamed:@"radio_unselected"] forState:UIControlStateNormal];
        [radioButton setImage:[UIImage imageNamed:@"RadioSelected"] forState:UIControlStateSelected];
        [radioButton addTarget:self action:@selector(radioButtonPressed:) forControlEvents:UIControlEventTouchDown]; 

if(indexPath == selectedIndexPath)
        [radioButton setImage:[UIImage imageNamed:@"RadioSelected"] forState:UIControlStateSelected];
else
        [radioButton setImage:[UIImage imageNamed:@"radio_unselected"] forState:UIControlStateNormal];

 Radio button taped from table cell and get index path of that button
Take on class Lebel NSIndexPath variable and store selected index path.

- (void)radioButtonPressed:(UIButton *)sender {

    CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:tableView];
    NSIndexPath *indexPath = [tableView indexPathForRowAtPoint:buttonPosition];
    if (indexPath != nil) {
       selectedIndexPath = indexPath
[tableView reloadData];
    }
}

Надеюсь, это поможет

...