用户转到主屏幕后,按钮不会更改单击时的图像

Button Won’t Change Image On-Click After User Goes to Home Screen

我有 5 个不同的按钮,我希望用户能够 select 一个,如果它不是 selected,如果它已经是 select =28=]ed,同时 de-selecting 另一个按钮,如果它是 selected。

normal = 未 selected 时按钮的图像 filled = selected

时按钮的图像

为此,我创建了一个 if/else 语句:

@IBAction func option1ButtonAction(发件人:AnyObject){

if (option1Button.currentImage == UIImage(named: "normal")) {

    if option2Button.currentImage == UIImage(named: "filled") || option3Button.currentImage == UIImage(named: "filled") || option4Button.currentImage == UIImage(named: "filled") || option5Button.currentImage == UIImage(named: "filled") {

        option1Button.setImage(filled, forState: .Normal)

        option2Button.setImage(normal, forState: .Normal)

        option3Button.setImage(normal, forState: .Normal)

        option4Button.setImage(normal, forState: .Normal)

        option5Button.setImage(normal, forState: .Normal)

    }

    else {

        option1Button.setImage(filled, forState: .Normal)

    }

}

else {

    option1Button.setImage(normal, forState: .Normal)

}

} 之后我做了一个 if option1Button.currentImage == UIImage(named: "filled") 语句。一切都按照我想要的方式工作,但是我有一个问题。每当用户按下主页按钮然后立即返回在应用程序中,按钮仍然具有“正常”图像,即使在单击时也是如此。

我在 viewDidDisappear 函数中添加了以下代码,希望能解决这个问题:

option1Button.setImage(normal, forState: .Normal)

option2Button.setImage(normal, forState: .Normal)

option3Button.setImage(normal, forState: .Normal)

option4Button.setImage(normal, forState: .Normal)

option5Button.setImage(normal, forState: .Normal)

但我仍然遇到问题。如果能提供任何帮助,我将不胜感激。

您需要在点击时从您的按钮更改图像!我明白了吧?

对于你的问题,我相信你可以做不同的事情。我做了一个代码。

首先在按钮中设置状态图像。

option1Button.setImage(normal, forState: UIControlState.Normal);
option1Button.setImage(filled, forState: UIControlState.Disabled);

option2Button.setImage(normal, forState:  UIControlState.Normal);
option2Button.setImage(filled, forState: UIControlState.Disabled);

其次我做了一个函数,这个函数改变了你按钮的状态。

selectButton(button:UIButton)
{
    option1Button.enabled = button != option1Button;
    option2Button.enabled = button != option2Button;
}

现在您只需以这种方式实现您的操作,其他细节是您不需要为每个按钮 ex 创建一个函数。 @IBAction func option1ButtonAction(sender: AnyObject) 只创建一个动作 @IBAction func onButtonClicked(sender: AnyObject) 并且喜欢这里的所有按钮...记住只在 selectButton(button:UIButton) 函数中增加按钮,或者如果更喜欢你可以创建一个集合并在那里按下你的按钮然后在 selectButton

做一段时间
@IBAction func onButtonClicked(sender: AnyObject) {

    if let clickedButton = sender as? UIButton{
        selectButton(clickedButton);
    }

}

如果我理解正确你的问题,希望对你有所帮助!