当TableView滚动时,自定义UITableViewCell会发生更改

时间:2016-04-07 19:10:35

标签: ios swift uitableview

我在UITableView中滚动时遇到问题。 对于这个表,我创建了一个带有2个标签和2个按钮的自定义UITableViewCell。 第一个标签是产品名称,第二个标签是金额。 2个按钮是+(加号)和 - (减号)按钮。

情况

该应用程序是一个订单系统。当客户想要产品时,他/她点击加号按钮。减号按钮 出现,金额标签增长为1(所以从0到1,或1到2等)。

问题

当用户滚动表格时,其他单元格将变为通过加号按钮“选中”的单元格。 因此,用户可以看到具有金额的产品,而他/她根本不需要它。

-

如何防止TableView“刷新”TableCells?

cellForRowAtIndexPath-method:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {  
    let cell = tableView.dequeueReusableCellWithIdentifier("ProductenCell", forIndexPath: indexPath) as! ProductenCell  
    let object = productArray[indexPath.row]  
    cell.label.text = (object.valueForKey("productNaam") as! String)  

    // Plus-button  
    cell.plusKnop.addTarget(self, action: "productToevoegen:", forControlEvents: .TouchUpInside)  
    cell.plusKnop.tag = indexPath.row  

    // Minus-button  
    cell.minKnop.addTarget(self, action: "productVerwijderen:", forControlEvents: .TouchUpInside)  
    cell.minKnop.tag = indexPath.row  

    // Grey backgorund fo even cells  
    if ((indexPath.row % 2) == 1) {  
        cell.backgroundColor = UIColor(red: 0.961, green: 0.961, blue: 0.961, alpha: 1)  
    }  

    return cell  
} 

感谢您的帮助: - )

2 个答案:

答案 0 :(得分:1)

您应该使用模型对象来存储数量并根据模型更新每个单元格。在视图中存储数据是错误的。

答案 1 :(得分:1)

您需要将正在更改的值保存到productArray或其他位置,并在cellForRowAtIndexPath中将此值恢复到单元格中。