Swift中的正确和错误答案

时间:2017-01-06 11:48:36

标签: swift button uibutton swift3

我正在制作关于欧洲国家的简单测验应用程序,我有一张地图和三个按钮,下面有国家名称,其中一个是正确的,当然还有两个不正确。我想强调不正确(如果用户点击不正确的按钮)按钮为红色并更正为绿色,如果用户单击正确按钮我想要突出显示为绿色,之后可能5s回到与最初相同的颜色。我知道如何更改按钮颜色,但我不知道为5s做那个并回到默认颜色。我怎样才能做到这一点 ?在我用来改变按钮颜色的代码下面

UIButtonOutlet.Backgroundcolor.Uicolor.green 

但它的默认绿色,所以我无法设置我的颜色。

2 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情。首先在您的班级中声明一个UIButton个实例,然后在设置scheduledTimer按钮后声明错误并使用backgroundColor,并使用您先创建的按钮存储该按钮参考。

var selectedButton = UIButton()

现在,在设置按钮selectedButton时使用此backgroundcolor

btnOutlet.backgroundcolor = .green //For correct
btnOutlet.backgroundcolor = .red //For incorrect
self.selectedButton = btnOutlet
//Now scheduled the timer for 5.0 sec
Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(setButtonBGBack), userInfo: nil, repeats: false)

在班级中添加setButtonBGBack方法

func setButtonBGBack() {
    self.selectedButton.backgroundcolor = .blue //Set to default here
    self.selectedButton = UIButton()
}

答案 1 :(得分:0)

让我们说你有你的代码来改变“changeColor”函数中的颜色:

var correctButton: UIButton

func changeColor() {
    if correctButton.backgroundColor == .green {
        correctButton.backgroundColor = .lightGray //back to original color
    }
}

这实质上是将正确的按钮颜色更改回其默认值(无论可能是什么),如果调用func时它是绿色的。

现在使用它,我们可以在连接到每个按钮的IBAction内部做一些工作:

@IBAction func buttonClicked(sender: UIButton) {
    if sender.titleLabel?.text == "Correct Answer" {
        button.backgroundColor = .green

        correctButton = button //set the correct button variable so the changeColor func can be used
        let timer = Timer.init(timeInterval: 5, target: self, selector: #selector(changeColor), userInfo: nil, repeats: false)
    } else if sender.titleLabel?.text == "False Answer 1" || sender.titleLabel?.text == "False Answer 2" {
        button.backgroundColor = .red
    }

}

所以在这段代码中,如果你单击正确答案的按钮(你可以通过标签或其他方式识别它,但我只是决定使用它的文本)然后颜色立即设置为绿色,然后设置了correctButton变量,但随后启动了一个计时器,在五秒钟之后将调用您的changeColor func,然后将其更改回原始颜色。

希望这会有所帮助:)

修改

当然,我的方法假定您使用故事板来创建这些按钮。如果您以编程方式创建它们,那么NiravD的方法将更好地工作。