我目前正在尝试遍历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
}
答案 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中的所有单元格。