我正在尝试使用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/