识别按下了哪个按钮

问题描述 投票:0回答:6

如何识别按下了哪个按钮。我有 3 个按钮操作。现在我有另一个按钮,当按下它时,它会识别按下了 3 个按钮中的哪个按钮。因为首先您必须点击 3 个按钮。单击 3 个按钮后,您将单击 识别按下的按钮,此按钮将识别或打印按下了 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) {
}
ios swift uibutton
6个回答
2
投票

尝试这样的事情

声明一个枚举

  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")
        }
    }

1
投票

对 @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")
    }
}

1
投票

这对我有帮助(swift 5.0)

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

}

1
投票

我更喜欢这种方法。

@IBOutlet weak var zeroPctButton: UIButton!
@IBOutlet weak var tenPctButton: UIButton!
@IBOutlet weak var twentyPctButton: UIButton!

@IBAction func tipChanged(_ sender: UIButton) {
    
    switch(sender) {
    case zeroPctButton:
        print("0%")
        break;
    case tenPctButton:
        print("10%")
        break;
    case twentyPctButton:
        print("20%")
        break;
    default:
        print(" - you fail - ")
        break;
    }

0
投票

做这样的事情,

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
    }
}

仅供参考。您也可以在

Switch
方法中使用
idenfifywhichpressed
语句。

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


0
投票

我认为你可以采用像这样的变量

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

}
© www.soinside.com 2019 - 2024. All rights reserved.