在点击时更改UIButton的图像将不起作用

时间:2013-11-17 11:39:24

标签: ios uibutton uiimage

我正在尝试在点击三个不同的UIButton时更改图像。 这是我的代码:

-(void)One:(UIButton*)sender{
    [facebook setImage:[UIImage imageNamed:@"tab_selected.png"] forState:UIControlStateNormal];
    [twitter setImage:[UIImage imageNamed:@"tab_unselected.png"] forState:UIControlStateNormal];
    [twittertag setImage:[UIImage imageNamed:@"tab_unselected.png"] forState:UIControlStateNormal];
}

#pragma mark change image of second button
-(void)Two:(UIButton*)sender{
    [facebook setImage:[UIImage imageNamed:@"tab_unselected.png"] forState:UIControlStateNormal];
    [twitter setImage:[UIImage imageNamed:@"tab_selected.png"] forState:UIControlStateNormal];
    [twittertag setImage:[UIImage imageNamed:@"tab_unselected.png"] forState:UIControlStateNormal];
}

#pragma mark change image of third button
-(void)Three:(UIButton*)sender{
    [facebook setImage:[UIImage imageNamed:@"tab_unselected.png"] forState:UIControlStateNormal];
    [twitter setImage:[UIImage imageNamed:@"tab_unselected.png"] forState:UIControlStateNormal];
    [twittertag setImage:[UIImage imageNamed:@"tab_selected.png"] forState:UIControlStateNormal];
}

或者我应该将它放在像这样的viewDidLoad方法中吗?

if (facebook.selected) {
        [facebook setImage:[UIImage imageNamed:@"tab_selected.png"] forState:UIControlStateSelected];
        [twitter setImage:[UIImage imageNamed:@"tab_unselected.png"] forState:UIControlStateNormal];
        [twittertag setImage:[UIImage imageNamed:@"tab_unselected.png"] forState:UIControlStateNormal];
    } else if (twitter.selected) {
        [facebook setImage:[UIImage imageNamed:@"tab_unselected.png"] forState:UIControlStateNormal];
        [twitter setImage:[UIImage imageNamed:@"tab_selected.png"] forState:UIControlStateSelected];
        [twittertag setImage:[UIImage imageNamed:@"tab_unselected.png"] forState:UIControlStateNormal];
    } else if (twittertag.selected) {
        [facebook setImage:[UIImage imageNamed:@"tab_unselected.png"] forState:UIControlStateNormal];
        [twitter setImage:[UIImage imageNamed:@"tab_unselected.png"] forState:UIControlStateNormal];
        [twittertag setImage:[UIImage imageNamed:@"tab_selected.png"] forState:UIControlStateSelected];
    }

我已连接UIButtons facebook,twitter& twittertag到IB中的按钮,但是当我点击应用程序中的按钮时没有任何反应。

为什么呢?有人可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

您需要为状态UIControlStateSelected设置图像,而不是UIControlStateNormal

此外,您应该在viewDidLoad或其他方法中执行此操作,而不是在单击按钮时正确

编辑:

想想CSS。有时您可能想要设置当某人悬停在其上或当某人已经点击它时链接颜色是什么。

在悬停/点击时,您不会这样做。“您可以通过设置样式 mouseOvervisited来预先执行此操作。

换句话说,你告诉你的程序,当有人选择我的按钮时,如果它甚至发生了,那就让图像成为这样。

您无需等到有人点击即可知道点击后将使用的图片。在单击之前,示例中的选定图像是已知。例如,如果所选图像取决于您单击的按钮部分,则会有所不同。

另一种表达方式:说你是老板,需要向你的团队提供如何防火的说明。

如果您不关心哪个团队成员向您提供指示,或者 火灾等等,您可能会说:“当火灾发生时出去,用B出口离开大楼。“

这就像[facebook setImage: forState: ]正在做的那样,image就像use Exit B to leave the buildingstate就像前一个例子中的Fire

现在说你想提供基于的指示火。

您需要添加另一个参数来指定位置,即:

[teamResponse setAction:@"EXIT B" forState:"FIRE" forLocation:2];

[teamResponse setAction:nil forState:"FIRE" forLocation:1];

在第一行中,您说“当发生火灾且位置为2时,请执行操作退出B。”

在第二个中,你说的是“当发生火灾并且位置为1时,什么都不做。”