UITableview内的单选按钮无法正常工作

时间:2014-09-03 11:06:55

标签: ios objective-c uitableview

我想在UITableview上添加单选按钮。单选按钮的功能应该类似于我在表格单元格中选择单选按钮时应该选择单选按钮,而其他单元格中的其他所有单选按钮都应该被​​取消选中。它应该是一种或者,只有一个单选按钮可以选择。

2 个答案:

答案 0 :(得分:4)

创建一个int

int selectstr;
 UIButton * button;


  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
static NSString *CellIdentifier = @"cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];




if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ;

}



UILabel  * title = [[UILabel alloc] initWithFrame:CGRectMake(50.0, 14.0, 215.0, 36.0)];
title.backgroundColor = [UIColor clearColor];
title.textAlignment = NSTextAlignmentLeft;
title.textColor=[UIColor blackColor];
title.tag=indexPath.row;
title.text = @"TEST";
// title.font = [UIFont fontWithName:@"Arial Hebrew" size:16.0f];
 title.font = [UIFont fontWithName:@"Palatino-Roman" size:14.0];
[cell.contentView addSubview:title];




button = [[UIButton alloc] initWithFrame:CGRectMake(20.0f, 20.0f, 46.0f, 30.0f)];
button.tag=indexPath.row;

if (selectstr ==indexPath.row)
{
    [button setImage:[UIImage imageNamed:@"radio_selected.png"] forState:UIControlStateNormal];
    cell.backgroundColor=[UIColor colorWithRed:(243.0/255.0) green:(114.0/255.0) blue:(74.0/255.0) alpha:1.0f];

}
else
{
    [button setImage:[UIImage imageNamed:@"radio_unselected.png"] forState:UIControlStateNormal];
    cell.backgroundColor=[UIColor clearColor];

}
button.adjustsImageWhenHighlighted=NO;
[button addTarget:self action:@selector(toggleCheckedMode:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:button];






return cell;

}


 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {

selectstr=indexPath.row;
[tableView reloadData];


 }


  - (IBAction)toggleCheckedMode:(UIButton*)sender
  {

   [button setImage:[UIImage imageNamed:@"radio_selected.png"] forState:UIControlStateNormal];

    // here customized for your self
    selectstr=sender.tag;
     [tableView reloadData];

  }

答案 1 :(得分:1)

Write this code into 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

NSIndexPath *selectedIndex;
    UIButton *radioButton;

radioButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    radioButton.frame = CGRectMake(30,23,24,24);
    // [radioButton setTitle:@"" forState:UIControlStateNormal];
    radioButton.tag = 8888;
    [cell.contentView addSubview:radioButton];
    radioButton = (UIButton *)[cell.contentView viewWithTag:8888];
    if (selectedIndex && selectedIndex.row == indexPath.row)
    {
        [radioButton setBackgroundImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal];
    }
    else
    {
        [radioButton setBackgroundImage:[UIImage imageNamed:@"unchecked.png"] forState:UIControlStateNormal];
    }

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    selectedIndex =indexPath;
    [self.userTabelView reloadData];
}