3个差分按钮和1个按钮中的动作

时间:2018-07-12 13:48:54

标签: swift xcode button action

我正在尝试开发一个易于应用的游戏。在我的设计中(使用xcode swift 4.x),我有一个按钮。但是这个按钮实际上是3个不同的按钮,每次按下该按钮都会改变其状态和动作。我尝试了一些if-else语句,但找不到任何方法。任何建议或知识如何实现这种代码。不管怎么说,还是要谢谢你。有一个不错的代码。

我写的代码

    @IBAction func btnUncoverQuestion(_ sender: RoundedButton) {
    btnUncoverQuestion.setTitle(questionArray?[questionNumber].title ?? "No question here", for: .normal)
    btnState = btnState + 1
    if btnState == 1 {
        sender.setTitle("Başlat", for: .normal)
        sender.setTitleColor(UIColor.flatWhite, for: .normal)
        startTimer()

        btnState += 1

        if btnState == 2 {
            btnState = 0
            sender.setTitle("Tamam", for: .normal)
            sender.setTitleColor(UIColor.flatWhite, for: .normal)
            stopTimer()
            let alert = UIAlertController(title: "Sizce cevap doğru mu", message: "Seçimin yap", preferredStyle: .alert)
            alert.addAction(UIAlertAction(title: "Doğru", style: .default, handler: { (trueAction) in
                self.playerArray[self.turn].point += 1
                self.turn += 1
                self.updateQuestionScreen(button: sender)
            }))
            alert.addAction(UIAlertAction(title: "Yanlış", style: .default, handler: { (wrongAction) in
                self.turn += 1
                self.updateQuestionScreen(button: sender)
            }))
        }
    }
}

2 个答案:

答案 0 :(得分:2)

我认为if btnState == 2语句错误。 另外,questionNumber是什么,何时递增?它与self.turn有何关系?

您可以尝试以下方法:

@IBAction func btnUncoverQuestion(_ sender: RoundedButton) {
    btnUncoverQuestion.setTitle(questionArray?[questionNumber].title ?? "No question here", for: .normal)
    btnState = btnState + 1

    if btnState == 1 {
        sender.setTitle("Başlat", for: .normal)
        sender.setTitleColor(UIColor.flatWhite, for: .normal)
        startTimer()
    } else if btnState == 2 {
        btnState = 0
        sender.setTitle("Tamam", for: .normal)
        sender.setTitleColor(UIColor.flatWhite, for: .normal)
        stopTimer()
        let alert = UIAlertController(title: "Sizce cevap doğru mu", message: "Seçimin yap", preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "Doğru", style: .default, handler: { (trueAction) in
            self.playerArray[self.turn].point += 1
            self.turn += 1
            self.updateQuestionScreen(button: sender)
        }))
        alert.addAction(UIAlertAction(title: "Yanlış", style: .default, handler: { (wrongAction) in
            self.turn += 1
            self.updateQuestionScreen(button: sender)
        }))
    }
}

答案 1 :(得分:0)

请为不同的事件使用标签。例如,第一次按下设置按钮。tag= 100,第二次按下设置标签200。

在按钮操作中检查标签:

@IBAction func btnAction(_ sender: UIButton) {

    switch sender.tag {
    case 100:
        //your action
        sender.tag = 200
    case 200:
        //your action
        sender.tag = 300
    case 300:
        //your action
        sender.tag = 100
    default:
        break
    }

}

希望对您有帮助。谢谢