在ios中选择UITableviewcell中的单选按钮

时间:2014-03-20 06:16:15

标签: ios xcode uitableview radio-button

显示UITableview中的名称列表,我正在尝试使用单选按钮选择任何一个名称。我遇到的问题是我无法选择单元格的特定行,要么选择了所有行,要么取消选择。

在单元格中显示单选按钮的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UIButton *report_but;
int flag;

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

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

}
 cell.textLabel.text = [user_name objectAtIndex:indexPath.row];

report_but = [UIButton buttonWithType:UIButtonTypeRoundedRect];
report_but.frame = CGRectMake(260,18,20,20);
[report_but setTitle:@"" forState:UIControlStateNormal];

if (flag == 0) {
    [report_but setBackgroundImage:[UIImage imageNamed:@"radio_blank.png"] forState:UIControlStateNormal];
}
else
[report_but setBackgroundImage:[UIImage imageNamed:@"radio.png"] forState:UIControlStateNormal];

[report_but addTarget:self action:@selector(radio_button:)forControlEvents:UIControlEventTouchUpInside];

[cell.contentView addSubview:report_but];
return cell;
}

- (void)radio_button:(id)button
{

NSLog(@"radio button clicked");
NSLog(@"button tag %@",button);
if (flag == 0) {
    flag = 1;
}
else
    flag = 0;

[table_list reloadData];

}

选择第1行时 enter image description here

我不能在这个单行选择中使用didselectrowatindexpath方法,因为选择行不应该选择单选按钮。

任何人都可以帮我选择此表格单元格的唯一一行。

1 个答案:

答案 0 :(得分:0)

试试这个,

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    UIButton *report_but;
    if (cell == Nil) 
    {
         cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
         UIButton *report_but = [UIButton buttonWithType:UIButtonTypeRoundedRect];
         report_but.frame = CGRectMake(260,18,20,20);
         [report_but setTitle:@"" forState:UIControlStateNormal];
         report_but.tag = 8888;
         [cell.contentView addSubview:report_but];
    } 

    report_but = (UIButton *)[cell.contentView viewWithTag:8888];
    if (selectedIndexPath && selectedIndexPath.row == indexPath.row) {

    } else {

    }

}

并在radio_button:

- (void)radio_button:(id)button
{
     CGPoint pointInTable = [button convertPoint:button.bounds.origin toView:self.tableView];    

     selectedIndexPath = [self.tableView indexPathForRowAtPoint:pointInTable];
     [table_list reloadData];
}