У меня есть табличное представление с пользовательской ячейкой, данные которой поступают из области:
var Materials: Results<RealmMaterial>!
override func viewDidLoad() {
let realm = RealmService.shared.realm
Materials = realm.objects(RealmMaterial.self).filter("InspectResult == 0")
}
В каждой ячейке у меня есть несколько кнопок, свойства которых меняются в зависимости от информации о ячейке.Я справляюсь с этим так:
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let cell = tableView.dequeueReusableCell(withIdentifier: "MaterialCell") as! MaterialsTableViewCell
let myMaterial = Materials[indexPath.row]
cell.materialCodeLbl.text = myMaterial.Number
cell.materialDescLbl.text = myMaterial.Desc
cell.redBtnOutlet.tag = myMaterial.Id
cell.greenBtnOutlet.tag = myMaterial.Id
cell.yellowBtnOutlet.tag = myMaterial.Id
cell.cellView.layer.shadowColor = UIColor.black.cgColor
cell.cellView.layer.shadowOpacity = 0.1
cell.cellView.layer.shadowOffset = CGSize.zero
cell.cellView.layer.shadowRadius = 10
cell.cellView.layer.cornerRadius = 10
cell.redBtnOutlet.layer.cornerRadius = 5
cell.greenBtnOutlet.layer.cornerRadius = 5
cell.yellowBtnOutlet.layer.cornerRadius = 5
if myMaterial.InspectResult == 1 {
cell.greenBtnOutlet.backgroundColor = UIColor(red: 137/255, green: 206/255, blue: 75/255, alpha: 1)
cell.yellowBtnOutlet.backgroundColor = UIColor(red: 192/255, green: 192/255, blue: 192/255, alpha: 1)
cell.redBtnOutlet.backgroundColor = UIColor(red: 192/255, green: 192/255, blue: 192/255, alpha: 1)
}
else if myMaterial.InspectResult == 2 {
cell.redBtnOutlet.backgroundColor = UIColor(red: 253/255, green: 77/255, blue: 67/255, alpha: 1)
cell.greenBtnOutlet.backgroundColor = UIColor(red: 192/255, green: 192/255, blue: 192/255, alpha: 1)
cell.yellowBtnOutlet.backgroundColor = UIColor(red: 192/255, green: 192/255, blue: 192/255, alpha: 1)
}
else if myMaterial.InspectResult == 3 {
cell.yellowBtnOutlet.backgroundColor = UIColor(red: 240/255, green: 192/255, blue: 16/255, alpha: 1)
cell.greenBtnOutlet.backgroundColor = UIColor(red: 192/255, green: 192/255, blue: 192/255, alpha: 1)
cell.redBtnOutlet.backgroundColor = UIColor(red: 192/255, green: 192/255, blue: 192/255, alpha: 1)
}
return cell
}
Но когда я перезагружаю данные, свойства объекта ячейки не изменятся.Это говорит о том, что cellForRowAt
доза не выполняется снова и свойства зависят от индекса клетки.в первый раз, когда данные загружаются, он работает нормально.но когда я перезагружаю данные, они не изменяются снова с новыми данными