Я пытаюсь обновить представление на основе изменения переменной элементов, но cartView равен нулю в didSet
@IBOutlet weak var cartView: UIView!
var items = 0 {
didSet{
if items > 0 {
cartView.isHidden = false
} else {
cartView.isHidden = true
}
}
willSet{}
}
Обновление этой переменной из tableviewcell следующим образом -- ''' class ItemListingItemsTableViewCell: UITableViewCell {
@IBOutlet weak var itemTypeImage: UIImageView!
@IBOutlet weak var itemName: UILabel!
@IBOutlet weak var itemPrice: UILabel!
@IBOutlet weak var itemAdd: UIButton!
@IBOutlet weak var itemMinus: UIButton!
@IBOutlet weak var itemPlus: UIButton!
@IBOutlet weak var buttonsview: UIView!
**var itemVC = ItemListingViewController()**
@IBAction func addItemInitial(_ sender: Any) {
itemAdd.isEnabled = false
itemAdd.setTitle("1", for: .normal)
itemAdd.setTitleColor(UIColor.white, for: .normal)
itemMinus.isHidden = false
itemPlus.isHidden = false
itemVC.items = itemVC.items + 1
}'''
1 ответ
Это потому, что вы изменяете count
до того, как будет установлен выход cartView
. Я изменил ваш код, проверив, является ли cartView
nil
, + добавил наблюдателя в сам cartView, поэтому после назначения выхода ваш cartView
немедленно обновляет свое состояние на основе count
значение свойства.
Также убедитесь, что выход cartView
подключен к вашему xib/раскадровке.
@IBOutlet private weak var cartView: UIView! {
didSet {
updateCartViewVisibility()
}
}
var items = 0 {
didSet{
updateCartViewVisibility()
}
}
private func updateCartViewVisibility() {
guard cartView != nil else { return }
cartView.isHidden = items == .zero
}
Похожие вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.
items
с другого контроллера. Вы должны убедиться, чтоcartView
инициализирован (и загружен) перед его вызовом.cartView
nil
в началеdidSet
, например.guard cartView != nil else { return }
cartView?.isHidden = items <= 0
.