我正在尝试使用Xcode4 for iOS中的自定义图像创建类似推入式按钮。
我正在使用的代码是

- (IBAction)btnAll:(id)sender
{
    UIButton *button = (UIButton *)sender;
    button.selected = !button.selected;
}

暂时正常。
但是我的问题是,当我切换时,我将其按下,然后又弹出,最后再打开。
该应用程序可以运行,但是确实很丑陋。

我首先将“突出显示”图像设置为开。因此,当我突出显示该按钮时,该按钮处于打开状态,然后弹出。很好但是,当我再次关闭它时,问题是相反的。

我试图把代码:
- (IBAction)btnAll:(id)sender
{
    UIButton *button = (UIButton *)sender;
    if(button.selected)
    {
        [button setImage[UIImage imageNamed@"off.png"] forState:UIControlStateHighlighted];
    }
    else
    {
        [button setImage[UIImage imageNamed@"on.png"] forState:UIControlStateHighlighted];
    }
    button.selected = !button.selected;
}

但是,只要button.selected = !button.selected长,就没有区别。
所以它不会做任何改变。

我也尝试在“Touch Down”上触发IBAction,但您可以想象这会令人沮丧。

有没有人解决这个问题?
有人也为此挣扎吗?

问候,非常感谢
朱利安

最佳答案

我之前也遇到过类似的问题,点击时按钮的功能有些奇怪。试试这个代码,让我知道它是否有效

    UIButton *button = (UIButton *)sender;
    if(button.selected)
    {
        [button setImage:[UIImage imageNamed:@"off.png"] forState:UIControlStateHighlighted];
        [button setImage:[UIImage imageNamed:@"off.png"] forState:UIControlStateSelected];
        [button setImage:[UIImage imageNamed:@"off.png"] forState:UIControlStateHighlighted | UIControlStateSelected];
    }
    else
    {
        [button setImage:[UIImage imageNamed:@"on.png"] forState:UIControlStateHighlighted];
        [button setImage:[UIImage imageNamed:@"on.png"] forState:UIControlStateSelected];
        [button setImage:[UIImage imageNamed:@"on.png"] forState:UIControlStateHighlighted | UIControlStateSelected];
    }
    button.selected = !button.selected;

    If (button.selected) {
      [button setImage:[UIImage imageNamed:@"on.png"] forState:UIControlStateNormal];
    } else {
      [button setImage:[UIImage imageNamed:@"off.png"] forState:UIControlStateNormal];
    }

当您点击并按住按钮时,状态实际上是“突出显示并选定”,因此您需要同时具有“突出显示”和选定状态的图像。

关于iphone - UIButton作为开关,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8571485/

10-12 12:50