Ios 如何使用条件在uitableview中设置复选框?

Ios 如何使用条件在uitableview中设置复选框?,ios,uitableview,ios7,custom-cell,Ios,Uitableview,Ios7,Custom Cell,当我点击btn1UITableview显示与下图1相同时,我有两个按钮,点击btn2UITableview显示与下图2相同 我正在使用自定义单元格。我已经完成了表重新加载,但它在UITableview中都显示“checkbox” BOOL isChecked; isChecked = true; -(IBAction)btn1:(id)sender { isChecked = true; [self.mytableview reload

当我点击btn1
UITableview
显示与下图1相同时,我有两个按钮,点击btn2
UITableview
显示与下图2相同

我正在使用自定义单元格。我已经完成了表重新加载,但它在
UITableview
中都显示“checkbox”

  BOOL isChecked;
  isChecked = true;


    -(IBAction)btn1:(id)sender
     { 
        isChecked = true;
      [self.mytableview reload];
     } 
    -(IBAction)btn2:(id)sender
     { 
        isChecked = false;
      [self.mytableview reload];
     } 
cellRowAtIndexPath
中的方法:

  if(isChecked)
  {
    customcell.trLabel.text = [arr1 objectAtIndex : indexpath.row]
    [customcell.button setImage:[UIImage imageNamed:@"checked.png"] forState:UIstateselected];
     [customcell.button setImage:[UIImage imageNamed:@"unchecked.png"] forState:UIstateNormal];
     [customcell.button addTarget:self action:@selector(checkButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
  }
  else
  {
    customcell.trLabel.text = [arr2 objectAtIndex : indexpath.row]
    [customcell.buttton = NULL;
  }
迪夫朗特法

 -(void)checkButtonTapped:(id)sender
  {
      sender.selected = !sender.selected;
  }
图1

图2

我已经完成了全选

didSelect
方法:

  DemoTableViewCell *cell;
if(indexPath.row == 0)
{
    for (int i = 0; i < [self.tableview1 numberOfSections]; i++) {
        for (int j = 0; j < [self.tableview1 numberOfRowsInSection:i]; j++) {
            NSUInteger ints[2] = {i,j};
            NSIndexPath *indexPath = [NSIndexPath indexPathWithIndexes:ints length:2];
            cell = (DemoTableViewCell *)[self.tableview1 cellForRowAtIndexPath:indexPath];
            //Here is your code

            UIButton *btn = cell.button;

            if( [[btn imageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"checked.png"]])
            {
                [btn setImage:[UIImage imageNamed:@"unchecked.png"] forState:UIControlStateNormal];
                // other statements
            }
            else
            {
                [btn setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal];

            }
        }
    }
}
else
{

   cell = (DemoTableViewCell *)[self.tableview1 cellForRowAtIndexPath:indexPath];

    UIButton *btn = cell.button;

    if( [[btn imageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"checked.png"]])
    {
        [btn setImage:[UIImage imageNamed:@"unchecked.png"] forState:UIControlStateNormal];
        // other statements
    }
    else
    {
        [btn setImage:[UIImage imageNamed:@"checked.png"] forState:UIControlStateNormal];

    }


}
DemoTableViewCell*单元格;
if(indexPath.row==0)
{
对于(int i=0;i<[self.tableview 1 numberOfSections];i++){
对于(int j=0;j<[self.tableview1行数部分:i];j++){
nsu整数int[2]={i,j};
nsindepath*indepath=[nsindepath indexpathwithindex:ints length:2];
cell=(DemoTableViewCell*)[self.tableview1 cellForRowAtIndexPath:indexPath];
//这是你的密码
UIButton*btn=cell.button;
如果([[btn imageForState:UIControlStateNormal]isEqual:[UIImage ImageName:@“checked.png”]]
{
[btn setImage:[UIImage ImageName:@“unchecked.png”]用于状态:UIControlStateNormal];
//其他声明
}
其他的
{
[btn setImage:[UIImage ImageName:@“checked.png”]用于状态:UIControlStateNormal];
}
}
}
}
其他的
{
cell=(DemoTableViewCell*)[self.tableview1 cellForRowAtIndexPath:indexPath];
UIButton*btn=cell.button;
如果([[btn imageForState:UIControlStateNormal]isEqual:[UIImage ImageName:@“checked.png”]]
{
[btn setImage:[UIImage ImageName:@“unchecked.png”]用于状态:UIControlStateNormal];
//其他声明
}
其他的
{
[btn setImage:[UIImage ImageName:@“checked.png”]用于状态:UIControlStateNormal];
}
}
我的问题是:

1) 全选选项全选已完成的“复选框”,但当我“取消选中”其中任何一项时,“全选”选项也将“取消选中”。 2) 不在图像2中显示“checbox”
UITablevieCell
。 3) 当我“取消选中”项目3并再次单击“全选”选项时,取消选中除项目3之外的所有“复选框”,并且项目3已选中。

解决方案2)在图像2中不显示“复选框”

您需要创建一个不带复选框的不同原型单元。 然后在
cellRowatineXpath
方法中,如果单击按钮2,则使用该单元格


对于其他问题,您需要存储每个复选框的状态(在数组或字典中)。然后在
cellRowatineXpath
方法中,根据该行复选框的状态,勾选或取消勾选该单元格的复选框

1) 将
NSMutableArray
放在您的ViewController中,您将在其中存储所有复选框状态(勾选或取消勾选)

2) 在勾选/取消勾选复选框时调用的方法中,在数组中更新1或0,如下所示:

- (void) actionCheckbox {
        self.mydata[indexPath.row] = 1;    // set 0 or 1
        [self.tableview reloadRowsAtIndexPath ...];  // Don't remember exact method name
}
3) 在
单元行索引路径中

 if(self.mydata[indexPath.row] == 1) {
     // tick checkbox for this row
 } else {
     // untick checkbox for this row
 }

我得到了你的第一个解决方案。但是我没有得到另一个解决方案,你能给我任何例子或完美的提示@user427969hi,,我理解你的答案,但给我一个警告或错误@USER427969我收到警告int to id not conversation error。您有完美的解决方案吗?请给我同样的问题:当我按下“全选”复选框时,如何在did select方法中存储所选索引?全部选中;当我取消选中其中任何一个复选框时,全部选中选项不取消选中。或者我再次按下“全选”选项,除“取消选中”选项为“选中”,其他选项为“取消选中”,请为我提供解决方案@user427969抱歉,我无法完成您的工作。我只能指导您正确的方向。在“全选”按钮的操作中,遍历整个self.mydata数组并将所有内容设置为1,对于“全选”按钮的操作,将所有内容设置为0。然后重新加载表格。