循环遍历UITableView中的各个UITableViewCells,以编辑单元格

时间:2016-08-04 11:55:00

标签: ios iphone swift uitableview

我目前正在尝试遍历UITableView的单元格,以便删除相关viewController中包含的特定UILabel。

我将如何做到这一点?

上下文:数组specialBool包含6个bool。索引位置对应于特殊或非特殊产品。如果bool为true,那么我想要删除该特定产品单元格中的标签(previousPrice)...如果为false,则标签应该保持正常。

到目前为止,这是我的代码。它不完整:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = self.tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! exploreTableView

cell.photo.image = globalVariable.images[indexPath.row]
cell.name.text = globalVariable.names[indexPath.row]
cell.price.text = globalVariable.prices[indexPath.row]
cell.unitPrice.text = globalVariable.unitPrice[indexPath.row]
cell.pPrice.text = globalVariable.previousPrice[indexPath.row]

    var i = 0
    while i < globalVariable.previousPrice.count {
        if (globalVariable.specialBool[i] == true) {

            // Strike through previous price
            let attributeString: NSMutableAttributedString =  NSMutableAttributedString(string: globalVariable.previousPrice[i])
            attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 2, range: NSMakeRange(0, attributeString.length))
            cell.pPrice.attributedText = attributeString;

        } else {
            cell.pPrice.text = globalVariable.previousPrice[i]

        }
        i += 1
    }

    return cell
}

2 个答案:

答案 0 :(得分:1)

您应该首先了解您在做什么以及您想做什么。充分了解UITableView

您不需要while循环,也需要cellForRowAtIndexPath调用每个可见单元格(这些单元格重用于其他索引路径)。

//Remove while loop and var i = 0

//This will call for each visible cell so replace `i` with indexPath.row
if globalVariable.specialBool[indexPath.row] == true {
 // do your work here
}

答案 1 :(得分:0)

为什么要循环遍历每个细胞?在tableview委托方法中cellForRowAtIndexPath:,实现代码来管理标签。

BOOL boolVal = [array objectAtIndex:indexPath.row];
if (boolVal) {
    //strike out previous price label.
}else {
    //keep the label normal.
}

当你想循环遍历单元格时,只需调用[tableView reloadData]重新加载UITableView中的所有单元格。