Swift - TableView,将偶数行的字体更改为粗体

时间:2016-02-11 15:34:48

标签: swift tableview tablecell

我有一个tableview,我想改变偶数行的字体,这是我的代码:

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

    let product = productList[indexPath.row]

    cell.productName.text = product.name
    cell.productPrice.text = "\(product.price) manat"

    if(indexPath.row % 2 == 0) {
        cell.productName.font = UIFont.boldSystemFontOfSize(13.0)
        cell.productPrice.font = UIFont.boldSystemFontOfSize(13.0)
    }
    return cell
}

当我运行我的代码时,在开始时一切正常,当我滚动我的表视图时,屏幕上出现的所有新行都变为粗体,偶数和旧行。我做错了什么?

2 个答案:

答案 0 :(得分:4)

请记住,表格视图重新使用单元格。这就是为什么你从一个名为dequeueReusableCellWithIdentifier(_:forIndexPath:)的方法中获取它们的原因。

如果字体是偶数行,则将字体设置为粗体,但如果它是奇数行,则不会将其设置为正常。如果该单元格以前用于偶数行,并且现在用于奇数行,则它仍然具有粗体字。

let weight = (indexPath.row % 2 == 0) ? UIFontWeightBold : UIFontWeightRegular
let font = UIFont.systemFontOfSize(13, weight: weight)
cell.productName.font = font
cell.productPrice.font = font

答案 1 :(得分:1)

您的可重复使用的单元格都设置为粗体。在if行%2 == 0中添加else以将单元格设置为在奇数行中使用时恢复为普通字体。