如何在 Swift 3 中设置 UIButton 的图像?

Adi*_*dav 5 uibutton uikit ios swift

最初,我的代码可以工作。

IBAction func clickedon(_ sender: UIButton) {

    if(gamestate[sender.tag] == 0 && gameisactive == true){

        gamestate[sender.tag] = activeplayer

    if (activeplayer == 1){
        print("working")
        sender.setImage(UIImage(named:"Cross.png"), for: UIControlState()) <-----------
        activeplayer = 2
    }
    else {
        print("working2")
        sender.setImage(UIImage(named:"Nought.png"), for: UIControlState()) <-----------
        activeplayer = 1

    } 
    }
Run Code Online (Sandbox Code Playgroud)

这两段设置图像的代码正在工作。这些按钮的图像没有任何设置。当他们被点击时,我希望他们切换到这些图像。这些图像位于视图控制器的文件夹中。我不知道他们为什么停止工作。我注释掉了所有其他代码以查看它是否可能是一个问题,但似乎不是。在这两种情况下都会打印出打印语句。这只是设定的图像,似乎没有做任何事情。没有错误,它只是什么也没做。

我不太明白 UIControlState() 代码。我正在模仿一个具有相同代码并且有效的在线项目。确实很奇怪。如果您有任何建议,请告诉我!

Joe*_*oey 1

在您的代码中, UIControlState() 可以替换为 UIControlState.normalUIControlState.highlighted

https://developer.apple.com/reference/uikit/uicontrolstate

IBAction func clickedon(_ sender: UIButton) {

    if(gamestate[sender.tag] == 0 && gameisactive == true){

        gamestate[sender.tag] = activeplayer

    if (activeplayer == 1){
        print("working")
        sender.setImage(UIImage(named:"Cross.png"), for: UIControlState.normal)
        sender.setImage(UIImage(named:"Cross_highlighted.png"), for: UIControlState.highlighted)
        activeplayer = 2
    }
    else {
        print("working2")
        sender.setImage(UIImage(named:"Nought.png"), for: UIControlState.normal)
        sender.setImage(UIImage(named:"Nought_highlighted.png"), for: UIControlState.highlighted)
        activeplayer = 1

    } 
}
Run Code Online (Sandbox Code Playgroud)