Как получить метку .tag? - PullRequest
       8

Как получить метку .tag?

0 голосов
/ 15 октября 2019

Я создал ярлык с целью, чтобы сделать клик, я хочу, чтобы тег каждой из кнопок для дифференцирования

        var btn = UILabel(frame: CGRect(x: x, y: y, width: 120,height:  100))
        btn.tag = index
        let tap = UITapGestureRecognizer(target: self, action: #selector(getNumber))
        btn.addGestureRecognizer(tap)
        btn.font = UIFont (name: "Copperplate", size: 20)
        btn.text = String(arrarValues[index])
        btn.isUserInteractionEnabled = true

, но я получаю ошибку с .tag

@objc  func getNumber(sender: UILabel) {
        let btnsendtag: UILabel = sender
        print("HERE MARK ERROR!!!", btnsendtag.tag)
    }

1 Ответ

0 голосов
/ 15 октября 2019

То, что вы получаете от селектора UITapGestureRecognizer, это не представление, а распознаватель:

@objc func getNumber(sender: UITapGestureRecognizer) {
   let view = sender.view
   print(view?.tag)
}

Обратите внимание, что это будет лучше работать с пользовательским UIControl с UILabel внутри, чтоможет реагировать на нажатия так же, как UIButton.

var btn = UIControl(frame: CGRect(x: x, y: y, width: 120, height:  100))
btn.tag = index

let label = UILabel(frame: btn.bounds)
label.autoresizingMask = [.flexibleWidth, .flexibleHeight]
btn.addSubview(label)

label.font = UIFont (name: "Copperplate", size: 20)
label.text = String(arrarValues[index])
btn.addTarget(self, action: #selector(getNumber(sender:)), for: .touchUpInside)

, и тогда ваш оригинальный обработчик действий будет работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...