swift 更新上次单击的按钮

b4lqfgs4  于 2023-06-28  发布在  Swift
关注(0)|答案(1)|浏览(75)

我正在使用Swift语言开发一个测验应用程序。当用户选择一个按钮,然后改变主意选择另一个按钮时,应用程序会考虑最初点击的按钮,而不是最后点击的按钮。我将单击的值存储在名为'selectedValue'的变量中。用户通过点击“下一个”按钮移动到下一个问题。

@IBAction func buttonClicked(_ sender: UIButton) {    
    if sender.tag == 0 {
        selectedValue += 0
    } else if sender.tag == 1 {
        selectedValue += 1
    } else if sender.tag == 2 {
        selectedValue += 2
    } else if sender.tag == 3 {
        selectedValue += 3
    }
}

@IBAction func nextButtonClicked(_ sender: Any) {       
    nextQuestion()
}

如何使用最后一次单击的值而不是最初单击的值?

oaxa6hgo

oaxa6hgo1#

因此,根据你对我评论的回答,我猜这是一个测验,用户回答多个问题,没有错误的答案,每个答案都有助于总分,最终得分估计用户的抑郁程度。
那么问题是,如果用户选择了一个答案,然后改变了主意,那么您就等于为同一个问题增加了selectedValue多次。
第五个问题,selectedValue等于10。用户点击按钮tag == 2,然后点击selectedValue == 12。他改变主意,选择了tag == 3的按钮,那么selectedValue应该是13,但它是15。
有很多方法可以解决这个问题,其中之一就是在每个问题之前记录下之前的selectedValue。您可以声明另一个变量,在我的示例中,previousValue,来跟踪这个。然后:

@IBAction func buttonClicked(_ sender: UIButton) {
    // if the user taps multiple buttons for the same answer, you reset the previous taps this way
    selectedValue = previousValue    

    if sender.tag == 0 {
        selectedValue += 0
    } else if sender.tag == 1 {
        selectedValue += 1
    } else if sender.tag == 2 {
        selectedValue += 2
    } else if sender.tag == 3 {
        selectedValue += 3
    }
}

@IBAction func nextButtonClicked(_ sender: Any) {  
    previousValue = selectedValue     
    nextQuestion()
}

相关问题