我一直在玩一个基本的投注应用程序,但似乎无法弄清楚这个问题。
滑块是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)")
}
}
}
答案 0 :(得分:1)
最简单的方法是执行以下操作:-
IBOutlet
用于UISlider,请创建一个(例如,称为sliderOutlet
。slider
函数的内容提取到一个新的私有函数中,该函数称为(例如)updateWager()
。引用sliderOutlet
而不是sender
。slider
函数以调用新函数。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()
}
}