首页 > 解决方案 > 滑块值不会更新值,除非它被移动

问题描述

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

滑块是 的百分比,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)")

            }
        }

    }

标签: swift

解决方案


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

  1. 如果您还没有IBOutletUISlider 的,请创建一个(例如,称为sliderOutlet.
  2. 将 func 的内容提取slider到一个新的私有函数,称为 (eg) updateWager()。参考sliderOutlet而不是sender.
  3. 更改sliderfunc 以调用您的新函数。
  4. 也从末尾flipCoin(即银行更新后)调用此函数。

这将在翻转完成时自动进行投注计算。如果任何其他事件(现在或将来)更新银行,您也可以调用新函数。

IE:

@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()
    }

}

推荐阅读