Swift – 确定哪个button是用开关按下的

我有4个button,调用一个function。 取决于哪个button被按下,我需要隐藏button内部的button之后调用的函数。我不知道哪个button被按下,所以我试图为每个4button分配标签,以标识和使用开关

我试过这个

switch sender.tag { case 1: self.button1.hidden = true case 2: self.button2.hidden = true case 3: self.button3.hidden = true case 4: self.button4.hidden = true } 

但这不工作编译器说关于使用未parsing的标识符“发件人”

如何正确地做到这一点?

编辑:

整个function

  if self.allowMistakeVar { let mistakeAlert = UIAlertController(title: "Here is title!", message: "message of alert", preferredStyle: .Alert) let okay = UIAlertAction(title: "OK", style: .Cancel) { UIAlertAction in self.allowMistakeVar = false self.allowMistakeButton.enabled = false switch sender.tag { case answer1Text: self.answer1Text.hidden = true case answer2Text: self.answer2Text.hidden = true case answer3Text: self.answer3Text.hidden = true case answer4Text: self.answer4Text.hidden = true } } mistakeAlert.addAction(okay) self.presentViewController(mistakeAlert, animated: true, completion: nil ) } else { 

另一种情况..}

尝试这个,

1)为每个button分配标签

 Button1.tag=1 Button2.tag=2 Button3.tag=3 Button4.tag=4 

2)然后检查你的常用button动作

 func buttonClicked(sender: UIButton) { switch sender.tag { case 1: self.sender.hidden = true //button1 break; case 2: self.sender.hidden = true //button2 break; case 3: self.sender.hidden = true //button3 break; case 4: self.sender.hidden = true //button4 break; default: () break; } } 

为什么你总是想用标签来确定UIButton? 如果被调用的函数有一个sender参数,那么你就知道通过这个参数调用该函数的UIButton。

 func buttonClicked(sender: UIButton) { switch sender { case button1: // Do something case button2: // Do some other stuff ... default: () } } 

把你的代码放在下面,如下所示:

 func btnSomeButtonClicked(sender: UIButton) { let tag = sender.tag; //put your same code here and either use tag variable as i shown or put as you did. } 

– >因此,您将轻松获得寄件人的财产。

– >还要检查你是否忘记给UIButtons添加标签。

而不是使用switch语句,您可以直接使用发件人。

请注意,您需要指定发件人是一个UIButton(因此,这将只在该函数只从一个button调用时)。

 @IBAction func submitButton(sender: UIButton) { /* extra code here */ sender.enabled = false } 

这减less了代码,并允许您添加额外的button,而无需更改代码。