我正在关注一个教程,这是 git 上的存储库
我有 7 个 View ,代表骰子。还有 6 个标签,每次按下 dieButtonTapped() 按钮时都会显示随机数。当我按下按钮时,第一个标签会出现,并带有生成的随机数,这很好,但我无法显示适当的 View 。因此,如果随机数是 5,标签中会显示数字 5,并且应该显示 7 个 View 中的 5 个,代表骰子。 它现在所做的是显示与标签上显示的随机数不匹配的随机 View 。
请帮助我更正 func rearrangeDie()
函数,以匹配 func updateScore(roll: Int)
返回的内容。
谢谢! 这是我的代码:
class ViewController: UIViewController {
@IBOutlet weak var view1: UIView!
@IBOutlet weak var view2: UIView!
@IBOutlet weak var view3: UIView!
@IBOutlet weak var view4: UIView!
@IBOutlet weak var view5: UIView!
@IBOutlet weak var view6: UIView!
@IBOutlet weak var view7: UIView!
@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!
@IBOutlet weak var label3: UILabel!
@IBOutlet weak var label4: UILabel!
@IBOutlet weak var label5: UILabel!
@IBOutlet weak var label6: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
view1.isHidden = true
view2.isHidden = true
view3.isHidden = true
view4.isHidden = true
view5.isHidden = true
view6.isHidden = true
view7.isHidden = true
label1.isHidden = true
label2.isHidden = true
label3.isHidden = true
label4.isHidden = true
label5.isHidden = true
label6.isHidden = true
}
@IBAction func dieButtonTapped(_ sender: AnyObject) {
rearrangeDie()
updateScore(roll: randomDiceRoll())
}
// Returns back a random Int (1, 2, 3, 4, 5, or 6)
func randomDiceRoll() -> Int {
return Int(arc4random_uniform(6) + 1)
}
func rearrangeDie() {
if randomDiceRoll() == 1 {
view7.isHidden = false
}
else if randomDiceRoll() == 2 {
view2.isHidden = false
view5.isHidden = false
}
else if randomDiceRoll() == 3 {
view2.isHidden = false
view7.isHidden = false
view5.isHidden = false
}
else if randomDiceRoll() == 4 {
view1.isHidden = false
view2.isHidden = false
view5.isHidden = false
view6.isHidden = false
}
else if randomDiceRoll() == 5 {
view1.isHidden = false
view2.isHidden = false
view5.isHidden = false
view6.isHidden = false
view7.isHidden = false
}
else if randomDiceRoll() == 6 {
view1.isHidden = false
view2.isHidden = false
view3.isHidden = false
view4.isHidden = false
view5.isHidden = false
view6.isHidden = false
}
}
func updateScore(roll: Int) {
let diceScore = String(roll)
if label1.isHidden {
label1.text = diceScore
label1.isHidden = false
}
else if label2.isHidden {
label2.text = diceScore
label2.isHidden = false
}
else if label3.isHidden {
label3.text = diceScore
label3.isHidden = false
}
else if label4.isHidden {
label4.text = diceScore
label4.isHidden = false
}
else if label5.isHidden {
label5.text = diceScore
label5.isHidden = false
}
else if label6.isHidden {
label6.text = diceScore
label6.isHidden = false
}
else {
viewDidLoad()
}
}
}
最佳答案
每次调用randomDiceRoll()
时,基本上都会生成一个新的随机数。将其存储在变量中并在整个 if 语句中访问它。
我还强烈建议以编程方式创建布局并进行认真的重构。
func rearrangeDie() {
let randomDiceRoll = randomDiceRoll()
if randomDiceRoll == 1 {
view7.isHidden = false
}
else if randomDiceRoll == 2 {
view2.isHidden = false
view5.isHidden = false
}
else if randomDiceRoll == 3 {
view2.isHidden = false
view7.isHidden = false
view5.isHidden = false
}
else if randomDiceRoll == 4 {
view1.isHidden = false
view2.isHidden = false
view5.isHidden = false
view6.isHidden = false
}
else if randomDiceRoll == 5 {
view1.isHidden = false
view2.isHidden = false
view5.isHidden = false
view6.isHidden = false
view7.isHidden = false
}
else if randomDiceRoll == 6 {
view1.isHidden = false
view2.isHidden = false
view3.isHidden = false
view4.isHidden = false
view5.isHidden = false
view6.isHidden = false
}
}
关于swift - 如何根据 swift 中的随机数生成来显示某个 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44847191/