每当我点击该行

时间:2017-06-30 10:31:36

标签: ios swift

我的clickCount中有一个CustomCell标签,我希望在rowClick上增加其值。  假设我的这个标签的当前值是5然后我想在行单击时增加它并在表中同时更新它。 我正在使用reloadRowsAtIndexPaths,但它没有更新标签文本,此后调用cellForRowAtIndexpath并重置标签以前的值。

2 个答案:

答案 0 :(得分:0)

   -(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(nonnull NSIndexPath *)indexPath
    {
      NSString *Str= [[ArrProductInCart objectAtIndex:indexPath.row] valueForKey:@"Product_Count"];
int Quantity=[Str intValue];
        Quantity=Quantity+1;

        StrQuantity=[NSString stringWithFormat:@"%d",Quantity];

        CGPoint correctedPoint = [sender convertPoint:sender.bounds.origin toView:tbl];
        NSIndexPath *indexPath = [tbl indexPathForRowAtPoint:correctedPoint];

        [self updateCell:indexPath withValue:[NSString stringWithFormat:@"%@",StrQuantity]];

    }

    - (void)updateCell:(NSIndexPath *)indexpathValue withValue:(NSString *)value
    {
        NSDictionary* dict = [Array_That_maintain_Count_Values objectAtIndex:indexpathValue.row];
        [dict setValue:value forKey:@"Product_Count"];
        [Array_That_maintain_Count_Values replaceObjectAtIndex:indexpathValue.row withObject:dict];

        [tbl reloadRowsAtIndexPaths:@[indexpathValue] withRowAnimation:UITableViewRowAnimationFade];

    }

现在,Array_That_maintain_Count_Values将包含每个索引路径的点击次数。 希望它会帮助你!!

答案 1 :(得分:0)

首先,您需要有一个变量来存储计数。取决于你想要这样的行数。如果有多个,则需要一个像[Int]这样的本地数组。假设您在第0部分,第0行有一个单元格,您想要此功能,并且它的初始值为5.所以您将拥有

var count = 5

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! Cell

    cell.label.text = String(count)

    return cell
}

现在您需要处理单元格单击事件。单击单元格时,您需要先增加此计数,然后重新加载单元格,以便触发cellForRow更新标签。所以你需要

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    self.tableView.deselectRow(at: indexPath, animated: true)

    if indexPath.row == 0 && indexPath.section == 0 {
        self.count ++
        self.tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .none)
    }
}