Swift 根据数据改变tableviewcell的边框颜色
Swift Change the tableviewcell border color according to data
我写了一个代码让单元格边框颜色根据 inStock 或 outStock 改变,如果它是 inStock 它将是红色边框否则它将是绿色,但我不适合我,我把它在 willDisplayCell 中,这是我的代码:
func tableView(_ tableView: UITableView,
willDisplay cell: UITableViewCell,
forRowAt indexPath: IndexPath){
cell.backgroundColor = UIColor.clear
cell.contentView.backgroundColor = UIColor.clear
let whiteRoundedView : UIView = UIView(frame: CGRect(x:10,y: 5,width: self.view.frame.size.width - 20,height: 214))
whiteRoundedView.layer.masksToBounds = false
whiteRoundedView.layer.cornerRadius = 5.0
whiteRoundedView.layer.shadowOffset = CGSize(width: -1,height: 1)
whiteRoundedView.layer.borderWidth = 2
cell.contentView.addSubview(whiteRoundedView)
cell.contentView.sendSubview(toBack: whiteRoundedView)
if stock[indexPath.row] == "inStock" {
whiteRoundedView.layer.borderColor = UIColor.red.cgColor
}
else {
whiteRoundedView.layer.borderColor = UIColor.green.cgColor
}
}
您正在为每个单元多次添加 whiteRoundedView - 因为单元实例被重复使用。
您应该只创建一次(在创建 UITableViewCell 时)- 然后在 willDisplayCell 函数中操作它的颜色。
我建议创建自定义 UITableViewCell,但您也可以通过使用视图 "tag" 属性 并检查它是否已经存在来避免该问题。
尝试将您的代码移动到 cellForRowAt
那样的方法中
cell.layer.masksToBounds = true
cell.layer.cornerRadius = 5
cell.layer.borderWidth = 2
cell.layer.shadowOffset = CGSize(width: -1, height: 1)
let borderColor: UIColor = (stock[indexPath.row] == "inStock") ? .red : .green
cell.layer.borderColor = borderColor.cgColor
我写了一个代码让单元格边框颜色根据 inStock 或 outStock 改变,如果它是 inStock 它将是红色边框否则它将是绿色,但我不适合我,我把它在 willDisplayCell 中,这是我的代码:
func tableView(_ tableView: UITableView,
willDisplay cell: UITableViewCell,
forRowAt indexPath: IndexPath){
cell.backgroundColor = UIColor.clear
cell.contentView.backgroundColor = UIColor.clear
let whiteRoundedView : UIView = UIView(frame: CGRect(x:10,y: 5,width: self.view.frame.size.width - 20,height: 214))
whiteRoundedView.layer.masksToBounds = false
whiteRoundedView.layer.cornerRadius = 5.0
whiteRoundedView.layer.shadowOffset = CGSize(width: -1,height: 1)
whiteRoundedView.layer.borderWidth = 2
cell.contentView.addSubview(whiteRoundedView)
cell.contentView.sendSubview(toBack: whiteRoundedView)
if stock[indexPath.row] == "inStock" {
whiteRoundedView.layer.borderColor = UIColor.red.cgColor
}
else {
whiteRoundedView.layer.borderColor = UIColor.green.cgColor
}
}
您正在为每个单元多次添加 whiteRoundedView - 因为单元实例被重复使用。
您应该只创建一次(在创建 UITableViewCell 时)- 然后在 willDisplayCell 函数中操作它的颜色。
我建议创建自定义 UITableViewCell,但您也可以通过使用视图 "tag" 属性 并检查它是否已经存在来避免该问题。
尝试将您的代码移动到 cellForRowAt
那样的方法中
cell.layer.masksToBounds = true
cell.layer.cornerRadius = 5
cell.layer.borderWidth = 2
cell.layer.shadowOffset = CGSize(width: -1, height: 1)
let borderColor: UIColor = (stock[indexPath.row] == "inStock") ? .red : .green
cell.layer.borderColor = borderColor.cgColor