【问题标题】:swift identify which button was pressed快速识别按下了哪个按钮
【发布时间】:2019-01-22 10:54:58
【问题描述】:

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

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

三个按钮

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

【问题讨论】:

  • 您可以设置每个按钮的标签并获取一个公共变量,将该标签分配到公共​​变量中,然后您可以从该公共变量中识别它
  • 在设置过程中,将按钮标签标记为 1,2,3... 当您的点击操作完成后,检查sender.tag...
  • 不要写button不同的动作,只创建1个动作并将tag设置为你的button,这样tag很容易识别。

标签: ios swift pressed


【解决方案1】:

试试这样的

声明一个枚举

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

【讨论】:

  • 对枚举表示赞赏。我在下面发布了相同想法的稍微清理过的版本。
【解决方案2】:

做这样的事情,

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 创建三个方法,只需创建一个方法并相应地分配标签即可。

【讨论】:

  • 先生,例如如果 index == 1 { 我想触发动作按钮 1 }
  • 这种情况下可以调用 btn1 选择器
  • 先生,我还有一个问题,我从对象库创建了一个导航栏,如何更改其高度、颜色和字体样式?
  • 你可以在这里找到我的答案stackoverflow.com/questions/49793174/…
  • 是的,你能在评论中回答我的问题吗?谢谢
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

    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
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      相关资源
      最近更新 更多