用户进入主屏幕后,按钮不会更改图像点击

时间:2015-09-05 22:39:07

标签: ios image swift button xcode6

我有5个不同的按钮,我希望用户能够选择一个,如果它没有被选中,如果它已被选中则取消选择,同时取消选择另一个按钮,如果它被选中

normal =未选中时按钮的图像填充=选中时按钮的图像

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

@IBAction func option1ButtonAction(sender: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(命名:"填充“)语句。一切都按照我想要的方式运作,但是我有一个问题。每当用户按下主页按钮然后再返回应用程序时,按钮仍然具有“正常”图像,即使单击也是如此。

在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)

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

1 个答案:

答案 0 :(得分:0)

单击时需要从按钮更改图像!我明白了吗?

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

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

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;
}

现在你只需按行动方式实施,其他细节是你不需要为每个按钮创建一个功能。 @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);
    }

}

如果我理解你的问题,我希望能帮到你!