У меня проблема, когда я условно устанавливаю ограничение для пользовательской ячейки таблицы. Например, у меня есть два UIImageViews в пользовательской ячейке таблицы. Они связаны друг с другом, но смещение зависит от содержимого ячейки.
Когда я настроил UITableView, все выглядит нормально, но когда я прокручиваю ячейки, ограничения перестают работать, и изображения прыгают. Мой код выглядит так:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! MyTableViewCell
if myArray[indexPath.row] == "Farmyard" {
cell.image1.image = UIImage(named: "Barn")
cell.image2.image = UIImage(named: "Tractor")
// offset +10
cell.image2.centerXAnchor.constraint(equalTo: cell.image1.centerXAnchor, constant: 10).isActive = true
} else if myArray[indexPath.row] == "Factory" {
cell.image1.image = UIImage(named: "Warehouse")
cell.image2.image = UIImage(named: "Truck")
// offset +20
cell.image2.centerXAnchor.constraint(equalTo: cell.image1.centerXAnchor, constant: 20).isActive = true
}
return cell
}
class MyTableViewCell: UITableViewCell {
var image1: UIImageView!
var image2: UIImageView!
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
image1 = UIImageView()
contentView.addSubview(image1)
image1.translatesAutoresizingMaskIntoConstraints = false
image2 = UIImageView()
contentView.addSubview(image2)
image2.translatesAutoresizingMaskIntoConstraints = false
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:)")
}
}
Похоже, что условные ограничения теряются при прокрутке таблицы. Когда я прокручиваю вверх и вниз, я вижу, что все больше и больше изображений находятся в неправильном положении. Кто-нибудь также сталкивался с этой проблемой или знает другой способ установить условные ограничения с пользовательской ячейкой? Я вижу эту проблему только тогда, когда устанавливаю ограничение из метода cellForRowAt
. Ограничения, установленные в пользовательской ячейке, ведут себя должным образом. В конечном итоге я хочу использовать несколько изображений и меток, поэтому настройка нескольких пользовательских ячеек невозможна.