Я пытаюсь понять, как правильно установить значения bool, используя didSet объекта модели. Мое приложение имеет серию сменных карт, где некоторые переворачивают, а некоторые нет. Ниже приведен код CardView, который запускается для каждой созданной карты.
В настоящее время код отлично работает для изображения и метки - каждая карта загружает уникальную информацию на основе объекта модели каждой карты. Однако, кнопка и свойство isFlippable находятся там, где я борюсь.
Код сейчас всегда загружает зеленый путь. Странная вещь, однако, в том, что даже когда cardModel должен установить для кнопки isEnabled значение false, он все равно будет загружать зеленый (но кнопка не будет работать, поэтому она стала отключенной ...)
var cardModel: CardModel! {
didSet {
imageView.image = cardModel.image
label.text = cardModel.label
flipButton.isEnabled = cardModel.isFlippable
isBackShowing = cardModel.isFlippable //Intentionally use isFlippable here because I want the initial layout to be based on this true or false value.
}
}
let imageView = UIImageView()
let label = UILabel()
let flipButton = UIButton()
var isBackShowing = false
override init(frame: CGRect) {
super.init(frame: frame)
setupLayout()
}
fileprivate func setupLayout() {
if flipButton.isEnabled == true {
if isBackShowing == true {
backgroundColor = .red
} else {
backgroundColor = .green
}
} else {
backgroundColor = .yellow
}
}
У меня также есть код, когда кнопка переворачивается, который чередует «isBackShowing», а затем вызывает setupLayout () - он работает нормально. Но он всегда загружается как ложный во время начальной настройки карты.