在uitableview

时间:2015-04-29 05:24:06

标签: objective-c iphone uitableview ios8 xcode6.3

我真正想要做的是计算选择和取消选择行后选择的行数。我得到总计数,但是当我取消选择我要计算的行时,仍然选择了多少其他行。我的代码如下

//countId = 0;
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];


    if (cell.accessoryType == UITableViewCellAccessoryNone)
    {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
        countId = countId + 1;
    }

    else
    {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }

    [self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}

然后我必须将countId的值传递给另一个视图并将其显示在一个按钮中。我知道这是小事,但我无法做到。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:5)

您可以向表格视图询问其当前选择的索引,因此如果您现在只需要多少索引,您可以这样做:

[self.tableView indexPathsForSelectedRows].count

修改

要继续关注UITableViewCellAccessoryCheckmark的单元格,您可以这样递减countId

if (cell.accessoryType == UITableViewCellAccessoryNone)
{
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
    countId = countId + 1;
}

else
{
    cell.accessoryType = UITableViewCellAccessoryNone;
    countId = countId - 1; 
}

答案 1 :(得分:0)

你可以做一件事。

在didSelectRowAtIndexPath中,获取单元格引用并更改它的附件,然后重新加载tableView,然后再设置countId = 0.

OR

选择一个Mutable Array(selectedArray)。

  • 现在在didSelecteRowAtIndexPath中写下代码

    if([selectedArray contains:indexpath.row]){
       [selectedArray removeObject:indexpath.row]; } 其他{    [selectedArray addObject:indexpath.row]; }

和cellForRowAtIndexPath

if([selectedArray contains:indexpath.row]){
     cell.AccessoryType = checkmark
}else{
     cell.AccessoryType = none
}

希望这适合你。