如何在iOS中单击按钮时取消选择所有单选按钮uitableview单元格

时间:2016-10-03 06:50:40

标签: ios objective-c iphone uitableview radio-button

我在UITableView中显示人物的名字,其中包含NSMutableArray以及单元格中的单选按钮,我想知道的是如何使用当用户单击导航栏中的按钮时将其命名为clearAllButton,所有表格的内容都被选中(我的意思是所有的单选按钮都被选中),如何更改RadioButton以便在clearAllButton点击时取消全部取消(我想在用户点击clearAllButton时取消选择所有的radioButton)。我是一个新的开发者任何帮助将不胜感激! 我在clearAllButtonAction中尝试过以下代码,但它无效。

- (IBAction)clearAllBtnActn:(id)sender {
    
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

    if([btnRadio isSelected]);
    {
        [btnRadio setSelected:NO];
    }
    
}

3 个答案:

答案 0 :(得分:1)

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
{
    CustomCell *cell = [tableview cellForRowAtIndexPath:indexPath];
    BOOL b = cell.check;

    if(b)
    {
        cell.check = NO;
        [cell.Selectitems setBackgroundImage:[UIImage imageNamed:@"product-uncheck.png"] forState:UIControlStateNormal];
    }
    else{
        cell.check = YES;

        [cell.Selectitems setBackgroundImage:[UIImage imageNamed:@"product-check.png"] forState:UIControlStateNormal];
    }
}

答案 1 :(得分:0)

首先需要一个基础数据源(例如NSArrayMyItem个对象),您可以从中驱动表视图单元格。

您的MyItem对象可能如下所示:

@interface MyItem ()

@property (nonatomic, strong) NSString *title;
@property (nonatomic, readwrite) BOOL selected;

@end

在视图控制器中创建数据源myItems

@interface MyViewController ()

@property (nonatomic, weak) IBOutlet UITableView *tableView;
@property (nonatomic, strong) NSArray *myItems;

@end

在视图控制器中,创建您的单元格:

@implementation MyViewController

...

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

    MyButtonTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier@"ButtonCell" forIndexPath:indexPath];
    MyItem *itemForCell = myItems[indexPath.row];

    cell.titleLabel.text = itemForCell.title;
    cell.radioButton.selected = itemForCell.selected;

    return cell;
}

...

@end

然后你的“清晰”方法将如下所示:

- (IBAction)clearAllBtnActn:(id)sender {

    // Deselect all items
    for (MyItem *item in self.myItems)
        item.selected = NO;

    [self.tableView reloadData];
}

答案 2 :(得分:0)

为此你必须拿一个阵列。

NSMutableArray *arraySelectObject;

你得到名字数组只需调用下面的行。假设你的名字数组将返回5个对象然后,

arraySelectObject=[[NSMutableArray alloc]init];
for (int i=0, i<=name.count,i++)
{
   [arraySelectObject addObject:@"0"];
}

如果您选择或取消选择单选按钮,请检查按钮操作

-(IBAction)selectButton:(id)sender
{
if([arraySelectObject objectAtIndex:sender.tag]==true)
 {
   [arraySelectObject replaceObjectAtIndex:sender.tag withObject:@"0"];
 }
else
 {
   [arraySelectObject replaceObjectAtIndex:sender.tag withObject:@"1"];
 }

 [tableView reloadData];
}

并在您的清除所有按钮方法

- (IBAction)clearAllBtnActn:(id)sender 
{
    for (int i=0, i<=name.count,i++)
    {
      [arraySelectObject addObject:@"0"];
    }

    [tableView reloadData];
}

在tableView中,cellForrow方法显示选择和取消选择单选按钮图像或任何代码

if([arraySelectObject objectAtIndex:sender.tag]==true)
{
   //Set the image or your code of the select  radio button /////

}
else
{
////////// Set the image or code of the Deselect radio button ///////
}