如何在 Swift 中使用 UIKit 注册多个点击按钮?

How to register more than one button tap using UIKit in Swift?

我正在试验按钮,我已经 运行 解决了一个可能很简单的问题。我有两个按钮和两个标签。

标签生成 "A" 或 "B" 的随机字符串值。如果选择了适当的按钮,我希望正确的标签消失。

我想出了下面的代码,但是我 运行 遇到了问题。如果字母相同,则点击相应按钮时两个标签将被隐藏。

我想我明白为什么会这样。这是因为我的代码是在按钮A被点击一次时执行的(我还没有开始按钮B,所以它什么也没做。)

所以我的问题是我如何要求 2 次点击?换句话说,如果 label_1 和 label_2 都显示为字符串 "A",我将如何要求用户点击 buttonA 两次?如果需要更多代码,请在评论中告诉我。

    @IBOutlet weak var label_1: UILabel!
    @IBOutlet weak var label_2: UILabel!
    @IBOutlet weak var label_3: UILabel!
    @IBOutlet weak var label_4: UILabel!
    @IBOutlet weak var label_5: UILabel!


    var visibleLetters = ["A", "B", "Z", "X"]
    var text = "", text2 = "", text3 = "", text4 = "", text5 = ""
    let aButton = "A", bButton = "B", zButton = "Z", xButton = "X"
    var x = 0


    override func viewDidLoad() {
        super.viewDidLoad()

        createRandomLetter(text, aSecondLetter: text2, aThirdLetter: text3, aFourthLetter: text4, aFifthLetter: text5)

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func buttonA(sender: UIButton) {

        if aButton == label_1.text {
            label_1.hidden = true
            label_1.tag += 1
        }

        else {
            //play animation
            print("play animation")
        }
    }

    @IBAction func buttonB(sender: UIButton) {
        if bButton == label_1.text {
            label_1.hidden = true
        }
    }

    @IBAction func buttonX(sender: UIButton) {
        if xButton == label_1.text {
            label_1.hidden = true
        }
    }

    @IBAction func buttonZ(sender: UIButton) {
        if zButton == label_1.text {
            label_1.hidden = true
        }
    }



    func createRandomLetter(individualLetter: String, aSecondLetter: String, aThirdLetter: String, aFourthLetter: String, aFifthLetter: String) {

        let individuaLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))],
        aSecondLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))],
        aThirdLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))],
        aFourthLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))],
        aFifthLetter = visibleLetters[Int(arc4random_uniform(UInt32(visibleLetters.count)))]

        label_1.text = individuaLetter
        label_2.text = aSecondLetter
        label_3.text = aThirdLetter
        label_4.text = aFourthLetter
        label_5.text = aFifthLetter
    }

    func isCorrect() {

        if aButton == label_1.text {
            label_1.hidden = true
            label_1.tag += 1
        }

        else if label_1.tag == 1 && aButton == label_2.text {

        }
        else {
            //play animation
            print("play animation")
        }
    }
}

好的,试着弄清楚你想做什么让我们举个例子。所以你有 4 个标签和 2 个按钮(A、B),当你单击一个按钮时,标签具有随机生成的 A、B 值,你需要检查该按钮是否具有与标签相同的文本,如果它是正确的,我们对 label2 做同样的事情,如果它不正确,我们会继续尝试。

一个合乎逻辑的方法是将标签与您的标签相关联(我想您已经在这样做了)并有一个时间变量来跟踪当前标签,例如

  var temporal:String!
  var current_tag:Int = 1
  override func viewDidLoad() {
    super.viewDidLoad()

    createRandomLetter(text, aSecondLetter: text2,
    aThirdLetter: text3, aFourthLetter: text4, aFifthLetter: text5)
     temporal = label1.text

}

  @IBAction func buttonZ(sender: UIButton) {
    //Answer is correct 
    if zButton == temporal {
        current_tag++
        IsCorrect(current_tag)
    }

}
func Iscorrect(tag:Int)
{

   if(label2.tag == tag)
   {
        temporal = label2.text
   }
   else if(label3.tag == tag)
   {
        temporal = label2.text
   }
   else if(label4.tag == tag)
   {
        temporal = label2.text
   }
}

类似的东西应该有用,我没有尝试过,因为我是从我的 Ipad 回答的,而且我无法访问我的笔记本电脑,但类似的东西应该完全有用,我怀疑我可以帮你XD