swift - 如何根据 swift 中的随机数生成来显示某个 View ?

标签 swift match view

我正在关注一个教程,这是 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/

相关文章:

facebook - 快速比较集

ios - NSError 为 nil 但进入 not nil 状态

mysql - 我可以创建一个 View ,将每隔几行划分为不同的值吗?

python - Pytorch 与转置之间的不同输出

ios - 检查用户是否打开了每个 View Controller

swift - 从 DMS 计算方位

正则表达式:捕获组内的捕获组

python - 如何使用 re.sub 基于模式字典替换文本的某些部分并替换 python 中的值?

javascript - 浏览器是否处理 dom 更改匹配?

asp.net-mvc - 在 ASP .Net MVC Controller 中查看每个条件