滑块值除非被移动,否则不会更新值

时间:2019-12-17 22:12:19

标签: swift

我一直在玩一个基本的投注应用程序,但似乎无法弄清楚这个问题。

滑块是bank的百分比,除非移动滑块,此时滑块将基于该值更新值。如果它没有移动并保持为先前的值,那么它还将使用先前的值。

例如:

我的银行为1000。我将滑块移至10%投注100。我赢了,现在我的银行为1100。

我想再次下注10%,但不会更新为应该为110的新值。它将保持相同的100值,直到移动滑块为止?我该如何解决这个问题,以便即使它不动,银行10%的价值都是真实的。

 @IBAction func slider(_ sender: UISlider)

    {
        betAmount.text = String(format: "%.0f%%",sender.value)
        wager = Int(sender.value) * bank / 100
    }

 @IBAction func flipCoin(_ sender: UIButton)
    {
        let number = [1,2]
        winnings = wager + ((wager * 90) / 100)


        if let coin = coins.randomElement()
        {
            if(coin == 1 && wager <= bank && wager > 0)
            {

                youBet.text = ("$\(wager)")
                bank += winnings
                bankLabel.text = ("$\(bank)")

            }
            else if(coin == 2 && wager <= bank && wager > 0)
            {

                youBet.text = ("$\(wager)")
                bank -= wager
                bankLabel.text = ("$\(bank)")

            }
        }

    }

1 个答案:

答案 0 :(得分:1)

最简单的方法是执行以下操作:-

  1. 如果您还没有IBOutlet用于UISlider,请创建一个(例如,称为sliderOutlet
  2. slider函数的内容提取到一个新的私有函数中,该函数称为(例如)updateWager()。引用sliderOutlet而不是sender
  3. 更改slider函数以调用新函数。
  4. 也可以从flipCoin的结尾(即银行更新后)调用此函数。

这将使翻页完成后自动进行下注计算。如果其他任何事件(现在或将来)更新银行,也可以调用新功能。

即:

@IBOutlet weak var sliderOutlet: UISlider! // Create this from the storyboard
func updateWager()
{
    betAmount.text = String(format: "%.0f%%", sliderOutlet.value)
    wager = Int(sliderOutlet.value) * bank / 100.0
}

@IBAction func slider(_ sender: UISlider)
{
  updateWager()
}

@IBAction func flipCoin(_ sender: UIButton)
{
    let number = [1,2]
    winnings = wager + ((wager * 90) / 100)


    if let coin = coins.randomElement()
    {
        if(coin == 1 && wager <= bank && wager > 0)
        {

            youBet.text = ("$\(wager)")
            bank += winnings
            bankLabel.text = ("$\(bank)")

        }
        else if(coin == 2 && wager <= bank && wager > 0)
        {

            youBet.text = ("$\(wager)")
            bank -= wager
            bankLabel.text = ("$\(bank)")

        }
        updateWager()
    }

}