Изменить текст метки на правой панели элемента Swift 4 - PullRequest
0 голосов
/ 15 февраля 2019

Я создал общий метод перемещения в расширении контроллера представления, чтобы показать, закрыть и переместить элемент на панели навигации через мое приложение.Он показывает элементы на панели навигации правильно.Но у элемента корзины, который находится справа от навигационной панели, есть значок кнопки и круглый значок с надписью.Мне нужно обновлять этикетку и увеличивать количество на этикетке каждый раз, когда товар добавляется в корзину.Но как-то лейбл не меняется.Ниже приведен мой код -

Расширение UIViewController -

func setCartBarButtonItem() {
    let cartBarButton = UIBarButtonItem.init(customView: getCartButton())
    self.navigationItem.rightBarButtonItem = cartBarButton
}

    func getCartButton() -> UIButton{

            let frame = CGRect.init(x: UIScreen.main.bounds.width - 40, y: 14, width: 44, height:44)
            let cartButton = UIButton.init(frame: frame)
            cartButton.setImage(UIImage(named: "cart"), for: .normal)
            cartButton.addTarget(self, action: #selector(self.cartButtonTapped), for: .touchUpInside)
            let cartLabelView = UIView(frame: CGRect(x: cartButton.layer.bounds.width/2, y: 10, width: 16, height: 16))
            cartLabelView.backgroundColor = UIColor(red: 255.0/255.0, green: 234.0/255.0, blue: 41.0/255.0, alpha: 1.0)
            cartLabelView.layer.cornerRadius = 8
            cartLabelView.layer.borderWidth = 0.5
            cartLabelView.layer.borderColor = UIColor(red: 54.0/255.0, green: 54.0/255.0, blue: 54.0/255.0, alpha: 1.0).cgColor
            cartButton.addSubview(cartLabelView)

            let cartLabel = UILabel(frame: CGRect(x: cartLabelView.layer.bounds.width/3, y: 0, width: cartLabelView.layer.bounds.width, height: cartLabelView.layer.bounds.height))
            cartLabel.textColor = UIColor.black
            cartLabel.font = UIFont(name: "Arial", size: 9)
            cartLabelView.addSubview(cartLabel)
            cartLabelView.isHidden = true

                    var count = 0
                    count = getNumberOfItemInCart()
                    if count > 0 {
                        cartLabelView.isHidden = false
                        cartLabel.text = String(count)
                    }

            return cartButton
        }

В одной функции делегата, которая вызывается при добавлении элемента в корзину, я вызываю метод setCartBarButtonItem () для обновления метки.Но ярлык не обновляется.Показывает только последнее значение.

...