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,而无需更改代码。