在准备过程中使用UIButton的标签

时间:2019-07-02 00:37:32

标签: swift segue sender

我有一个按钮,点击后执行序列,在此过程中,我与发送者一起发送UIButton的标签

@IBAction func nextBtn(_ sender: UIButton) {
    performSegue(withIdentifier: "more", sender: sender.tag)
}

在准备任务中,我尝试使用此标签,但显然我做错了

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "more" {
        if let navigationVC = segue.destination as? UINavigationController, let openPDF = navigationVC.topViewController as? Morepage {
            let senderTag = (sender as? UIButton)?.tag
                if senderTag == 1 {
                  print(123)
                } else if senderTag == 2 {
                  print(123)
                }
            }
    }
}

senderTag显示为无或为零。您能帮我在准备任务中正确使用sender.tag吗? 非常感谢

2 个答案:

答案 0 :(得分:0)

您可以按照以下方式检查按钮标签。 sender:将是sender而不是sender.tag

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "more" {
        if let navigationVC = segue.destination as? UINavigationController, let openPDF = navigationVC.topViewController as? Morepage {

                if yourButton.tag == 1 {
                  print(123)
                } else if yourButton.tag == 2 {
                  print(123)
                }
            }
    }
}

OR

  if sender.tag == 1 {
            print("Button 1 is pressed")
        }

答案 1 :(得分:0)

  

senderTag显示为none或nil。

问题在于您编写nextBtn函数的方式。

不要将sender.tag指定为performSegue的传入参数,但发送方对象本身如下:

@IBAction func nextBtn(_ sender: UIButton) {
    performSegue(withIdentifier: "more", sender: sender)
}

prepare函数中,您将收到此对象并提取其tag属性:按钮本身。