UITableView - 检查是否有单元格复选标记

时间:2015-06-10 17:17:30

标签: ios objective-c uitableview

在我的UITableView中,用户可以检查或不检查Cell。我怎么能弄明白,检查并将其保存在数组中?

使用以下代码,您可以检查单元格:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

    if ([cell accessoryType] == UITableViewCellAccessoryNone) {
        [cell setAccessoryType:UITableViewCellAccessoryCheckmark];
    }
    else {
        [cell setAccessoryType:UITableViewCellAccessoryNone];
    }

    [tableView deselectRowAtIndexPath:indexPath animated:NO];
}

2 个答案:

答案 0 :(得分:3)

不要检查复选标记作为细胞的附件视图。正在重复使用单元格,这会弄乱你的逻辑。

相反,保持一组可变对象被呈现由当前被选中的单元格'又被检查过。

当用户点击一个单元格时,您可以在可变集中切换所呈现对象的成员资格,并相应地更新复选标记。

答案 1 :(得分:-1)

//loop through all sections in tableview    
for (int section = 0; section < [tableView numberOfSections]; section++) {
        //loop through all rows in each section
        for (int row = 0; row < [tableView numberOfRowsInSection:section]; row++) {
            //get the cell based on current index
            NSIndexPath* cellPath = [NSIndexPath indexPathForRow:row inSection:section];
            UITableViewCell* cell = [tableView cellForRowAtIndexPath:cellPath];
            //check cell accessory
            if([cell accessoryType] == UITableViewCellAccessoryCheckmark){
               //cell has checkmark, add to array
            }
        }
    }