我有一个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
}
当我运行我的代码时,在开始时一切正常,当我滚动我的表视图时,屏幕上出现的所有新行都变为粗体,偶数和旧行。我做错了什么?
答案 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以将单元格设置为在奇数行中使用时恢复为普通字体。