繁体   English   中英

快速识别按下了哪个按钮

[英]swift identify which button was pressed

如何快速识别是否按下了哪个按钮我有 3 个按钮操作。现在我有另一个按钮,当按下它时它将识别按下 3 个按钮中的哪个按钮。 原因首先是您必须在单击 3 按钮后单击 3 按钮,然后您将单击 identfifywhichpressed 按钮,此按钮将识别或打印 3 中的哪个按钮被按下。

//this button will identify
    @IBAction func idenfifywhichpressed(_ sender: UIButton) {
    }

3 个按钮

 @IBAction func btn1(_ sender: UIButton) {
}
 @IBAction func btn2(_ sender: UIButton) {
}
 @IBAction func btn3(_ sender: UIButton) {
}

尝试这样的事情

声明一个枚举

  enum SelectedButtonTag: Int {
     case First
     case Second
     case Third
  }

按钮动作

使用不同的标签将三个按钮操作连接到此方法

   @IBAction func idenfifywhichpressed(sender: UIButton) {
        switch sender.tag {
        case SelectedButtonTag.First.rawValue:
            print("do something when first button is tapped")
        case SelectedButtonTag.Second.rawValue:
            print("do something when second button is tapped")
        case SelectedButtonTag.Third.rawValue:
            print("do something when third button is tapped")
        default:
            print("default")
        }
    }

做这样的事情,

var index:Int = 0

现在这样做,仅供参考,相应地设置按钮标签 1,2 和 3...

@IBAction func btn1(_ sender: UIButton) {
    index = sender.tag
}

@IBAction func btn2(_ sender: UIButton) {
    index = sender.tag
}

@IBAction func btn3(_ sender: UIButton) {
    index = sender.tag
}

现在这个,

@IBAction func idenfifywhichpressed(_ sender: UIButton) {
    if index == 1 {
        //Button 1 Pressed
    }else if index == 2 {
        //Button 2 Pressed
    } else if index == 3{
        //Button 3 Pressed
    }
}

供参考。 您也可以在idenfifywhichpressed方法中使用Switch语句。

更新。 不要为 btn1、btn2 和 btn3 创建三个方法,为简单起见,只需创建一个方法并相应地分配标签。

@prajnaranjan-das 答案的小改进:立即转换为枚举以清理一些杂物并消除在开关中实现默认值的需要......

enum ButtonTag: Int {
    case First
    case Second
    case Third
 }

func buttonTapped(_ sender: UIButton) {
    guard let knownSender = ButtonTag(rawValue: sender.tag) else { return }
    switch knownSender {
    case .First:
        print("do something when first button is tapped")
    case .Second:
        print("do something when second button is tapped")
    case .Third:
        print("do something when third button is tapped")
    }
}

我认为您可以采用类似的变量

var checkBtn: String?

在第一个按钮内更改变量值

checkBtn = "1"

在第二个按钮内更改变量值

checkBtn = "2"

在第三个按钮内更改变量值

checkBtn = "3"

@IBAction func idenfifywhichpressed(_ sender: UIButton) {

    // just print the value of CheckBtn

    print(checkBtn)

    //this will give you which btn pressed right

}

这对我有帮助(swift 5.0)

@IBAction func hardnessSelected(_ sender: UIButton) {
        print(sender.currentTitle) // <----------
    }
    

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM