0

I am trying to update the view based on the change in items variable but cartView is nil in didSet

@IBOutlet weak var cartView: UIView!

var items = 0 {
    didSet{
        if items > 0 {
            cartView.isHidden = false
        } else {
            cartView.isHidden = true
        }
    }
    willSet{}
}

Updating this var from tableviewcell like this -- ''' 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


}'''
keerthi
  • 13
  • 1
  • 6

1 Answers1

1

That's because you are modifying count before the outlet cartView is set. I've modified your code by checking if cartView is nil + added an observer to the cartView itself, so once the outlet is assigned, your cartView immediately updates its state based on the count property value.

Please also make sure that cartView outlet is connected in your xib/storyboard.

@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
}
Dennis Pashkov
  • 934
  • 10
  • 24