Я недавно начал изучать Swift и проходил учебник .Идея состоит в том, чтобы создать игру BullEye.У меня возникла проблема с отображением случайно сгенерированного значения.
Эта ошибка появляется случайно.Иногда у меня есть серия нормально отображаемых значений, иногда серия «...» вместо значений.
Вот мой код:
import UIKit
class ViewController: UIViewController {
var currentValue = 0
@IBOutlet weak var slider: UISlider!
@IBOutlet weak var targetLabel: UILabel!
@IBOutlet weak var scoreLabel: UILabel!
@IBOutlet weak var roundLabel: UILabel!
var targetVal = 0
var score = 0
var round = 1
override func viewDidLoad() {
super.viewDidLoad()
currentValue = lroundf(slider.value)
startRound()
}
@IBAction func sliderMoved(_ slider: UISlider){
print("The value is now: \(slider.value)")
currentValue = lroundf(slider.value)
}
@IBAction func showAlert(){
let diff = abs(targetVal-currentValue)
let points = 100 - diff
score += points
round += 1
let message = "You scored \(points)"
let alert = UIAlertController(title: "Hello, world!", message: message, preferredStyle: .alert)
let action = UIAlertAction(title: "Awesome", style: .default, handler: nil)
alert.addAction(action)
present(alert, animated: true, completion: nil)
startRound()
}
func startRound(){
updateLabels()
targetVal = 1 + Int(arc4random_uniform(100))
currentValue = 50
slider.value = Float(currentValue)
}
func updateLabels(){
targetLabel.text = String(targetVal)
scoreLabel.text = String(score)
roundLabel.text = String(round)
}
}
Перемещение updateLabels () внутри startRound () не имеет значения.В первом раунде значение всегда отображается.