我正在使用Table视图,其中我有一个带有复选框的自定义单元格。只要在tableview中,单元格中的复选框已经通过计算某些逻辑来选择。屏幕顶部有一个条形按钮。我想要的是,点击该按钮时,与所选复选框关联的数量应该属于数组。
例如,如果我目前在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个单元格中选中的复选框,因为它们当前可见。我该怎么办?
答案 0 :(得分:0)
如果我理解正确,我认为您应该存储值是否在数组中检查,而不是整个数据集的大小。在这种情况下6.
将复选框的目标方法添加到valueChanged
UIControlEvent
。在此方法中,存储是否检查行的值。
另外在cellForRowAtIndexPath
中:根据数组内容设置复选框的值。
如果您尝试使用实际单元作为存储数据的基础,则需要将整个表保留在内存中,这会使UITableView提供的数据和UI虚拟化所带来的效率失败。< / p>
希望有所帮助,
戴夫
答案 1 :(得分:0)
您可以创建一个NSMutableArray
selectedCheckbox
来跟踪所选的复选框。
每当选中一个复选框时,只需将复选框编号添加到数组
[selectedCheckbox addObject:@"2"];
并且无论何时取消选中,只需将其从数组
中删除即可[selectedCheckbox removeObject:@"2"];
现在,您可以引用此数组来获取所选复选框的计数以及所选复选框的索引。 希望这会对你有所帮助。