0

我正在使用表格视图,其中有一个带有复选框的自定义单元格。一旦表格视图通过某些逻辑的计算,单元格中的复选框就已经被选中。屏幕顶部有一个条形按钮。我想要的是在单击该按钮时,与所选复选框关联的数量应该落入一个数组中。

例如,如果我当前在 tableview 中有六个单元格,所有这些单元格都被选中,但当前只有四个可见。因此,单击按钮时,数组中仅添加了 4 个值。

如何检测单击按钮时选中的所有复选框?点击按钮的代码是: - (IBAction)btn_AddRefill_click:(id)sender{

for (int i=0; i < [arr_RxDetails count]; i++) {


    NSIndexPath * indexpath = [NSIndexPath indexPathForRow:i inSection:0];
    //NSLog(@"The indexpath is %@",indexpath);
   MyMedicationCell * cell = (MyMedicationCell *) [tableview cellForRowAtIndexPath:indexpath];

    // here I am checking if the button is selected or not.
    if ([cell.btn_RxCheck isSelected]) {
        //NSLog(@"the Rx id is %@",[[arr_RxDetails objectAtIndex:i]valueForKey:@"RxId"]);
        [self.arr_RxNo addObject:[[arr_RxDetails objectAtIndex:i]valueForKey:@"RxId"]];


    }
}
NSLog(@"the array is %@",arr_RxNo);
[self.obj_AddRxs didSelectRxs:self.arr_RxNo];

}

在这段代码中,循环运行了 6 次,但它检测到复选框仅在 4 个单元格中被选中,因为它们现在是可见的。我应该怎么办?

4

2 回答 2

0

如果我理解正确,我认为您应该将是否检查值存储在整个数据集大小的数组中。在这种情况下 6。

valueChanged UIControlEvent为复选框添加一个目标方法。在此方法中存储是否检查行的值。

此外,在您的cellForRowAtIndexPath: 根据数组的内容设置复选框的值。

如果您尝试使用实际单元格作为存储数据的基础,则需要将整个表保存在内存中,这违背了 UITableView 提供的数据和 UI 虚拟化所获得的效率目标。

希望有帮助,

戴夫

于 2013-10-18T06:42:08.990 回答
0

您可以创建一个NSMutableArray selectedCheckbox将跟踪所选复选框的内容。

Whenever a check box is selected just add checkbox number to array

[selectedCheckbox addObject:@"2"];

并且每当它未被选中时,只需将其从数组中删除

[selectedCheckbox removeObject:@"2"];

现在您可以参考这个数组来获取选中复选框的计数以及选中复选框的索引。 希望这会帮助你。

于 2013-10-18T06:43:55.590 回答