【问题标题】:How to create a radio button in table view如何在表格视图中创建单选按钮
【发布时间】:2015-02-19 17:37:13
【问题描述】:

我在表格视图单元格中有一个单选按钮。这是我的单选按钮

-(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];
} }

在上述编码中,单选按钮未更改为选中状态。请帮我编码。

【问题讨论】:

标签: ios objective-c uibutton radio-button radiobuttonlist


【解决方案1】:

在创建按钮时设置选中和未选中状态的图像。

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;

单击按钮时,您只需更改选定状态。

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

     else
     {
         [sender setSelected:YES];
      }
}

【讨论】:

  • sender.selected = !sender.selected;
  • 谢谢。我已经更改了 id,但我认为 if else 对初学者来说更容易解释。
  • 兄弟,感谢它的工作,但这个单选按钮出现在表格的 10 行中。一次只点击一个按钮。我能做些什么呢..
  • @Ayan Khan 我只在 cellforRow 中声明它。我不明白。请帮帮我
  • @Ayan Khan 已删除但仍无法正常工作我可以选择表格视图中的所有单选按钮..
【解决方案2】:
-(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;
UIButton *newRadioButton;
newRadioButton = [UIButton buttonWithType:UIButtonTypeCustom];
newRadioButton.frame = CGRectMake(30, 0, 15, 14.5);

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

}

【讨论】:

  • 我已经编辑了....用这两种方法替换它们,如果工作,请告诉我,然后我会解释你的代码有什么问题。
【解决方案3】:
  1. 为控件事件 UIControlEventValueChanged 设置目标操作。
  2. 在动作发生之前将图像设置为特定状态(在cellForRowAtIndexPath 方法中)。通过使用setImage:forState:,您实际上并没有更改当前的控件图像,您只是说控件使用精确图像来处理该状态发生的某些控件状态。不要使用highlighted state,以防selected state 更合适。尝试通过[radiobtn setSelected:YES][radiobtn setSelected:!radiobtn.isSelected] 以编程方式更改状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 2014-03-07
    • 2014-06-08
    相关资源
    最近更新 更多