Search code examples
iosobjective-cuibuttonradio-buttonradiobuttonlist

How to create a radio button in table view


I am having a radio button in table view cell. This is my radio button

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"myCell"];
if(cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"myCell"];

    cell.selectionStyle = UITableViewCellSelectionStyleNone;

 radiobtn = [UIButton buttonWithType:UIButtonTypeCustom];
    radiobtn.frame = CGRectMake(30, 0, 15, 14.5);

    [radiobtn setImage:[UIImage imageNamed:@"unselect"] forState:UIControlStateNormal];
    [radiobtn setImage:[UIImage imageNamed:@"select"] forState:UIControlStateSelected];
    [radiobtn addTarget:self action:@selector(radiobtn:) forControlEvents:UIControlEventTouchUpInside];
    cell.accessoryView = radiobtn;
}
cell.textLabel.text = [array objectAtIndex:indexPath.row];
 return cell;

}

-(void)radiobtn:(id)sender

{


 if([sender isSelected])

{
[sender setSelected:NO];
}  else
[sender setSelected:YES];
} }

In the above coding radio button is not changing to selected state. Please help me in coding.


Solution

  • Set the images for both selected and unselected state while creating the button.

    radiobtn = [UIButton buttonWithType:UIButtonTypeCustom];
    radiobtn.frame = CGRectMake(30, 0, 15, 14.5);
    [radiobtn setImage:[UIImage imageNamed:@"unselect"]] forState:UIControlStateNormal];
    [radiobtn setImage:[UIImage imageNamed:@"select"]] forState:UIControlStateSelected];
     radiobtn.tag=1;
    [radiobtn addTarget:self action:@selector(radiobtn:) forControlEvents:UIControlEventTouchUpInside];
    cell.accessoryView = radiobtn;
    

    On button click, you just have to change the selected state.

    -(void)radiobtn:(UIButton *)sender
    {
        if([sender isSelected])
        {
            [sender setSelected:NO];
        }
    
         else
         {
             [sender setSelected:YES];
          }
    }