布尔没有正确回归

时间:2017-04-27 08:29:43

标签: swift if-statement swift3 uibutton

我对编程很陌生,我想学习Swift 3.0。

我一直在努力编写我自己的TicTacToe-Game,但不知何故,当我检查胜利者时,bool返回不会按我想要的方式工作......

CheckWin()函数如下所示:

func CheckWin() -> Bool {
    if button1.titleLabel?.text == button2.titleLabel?.text && button2.titleLabel?.text == button3.titleLabel?.text && button1.titleLabel?.text != nil    {
        return true
    } else {
        return false
    }
//and so on...

我的问题是,当我点击一个Button时,它用“X”或“O”填充Button,之后我通过if语句调用CheckWin()函数 但它将Labeltext设置为“Won!”在NEXT时间之后,我点击一个按钮。而不是立即检查它并将Labeltext设置为“Won!”。

@IBAction func buttonClick(_ sender: UIButton) {
    if sender.titleLabel?.text == nil {
         if player % 2 == 0 {
              sender.setTitle(playerx, for: UIControlState.normal)
              player += 1  //Adds 1 to the variable player
              turn += 1    //Adds 1 to the variable turn (to check later for a draw)
         } else {
              sender.setTitle(playero, for: UIControlState.normal)
              player += 1
              turn += 1
         }
    }
    if CheckWin() {
        label.text = "Won!"
    }
}

我感谢任何帮助/提示!提前致谢!

(顺便说一句,我知道为每个Button创建一个插座并不是一个好主意,但起初我只想在开始改进之前让这个东西工作):))

1 个答案:

答案 0 :(得分:0)

你有:

if player%2==0
{
    sender.setTitle(playerx, for: UIControlState.normal}
    player += 1  //Adds 1 to the variable player
    turn += 1    //Adds 1 to the variable turn (to check later for a draw)
}

请参阅第一行末尾的},而不是)这是错误还是只是错误地为您的问题复制了代码?

此外,请确保按钮类型为“自定义”,而不是“系统”。将其更改为自定义将使默认文本颜色变为白色,因此将其更改为黑色或其他任何内容。