【问题标题】:Changing image of UIButton on click won't work点击时更改 UIButton 的图像不起作用
【发布时间】:2013-11-17 11:39:24
【问题描述】:

单击三个不同的 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 中的按钮,但是当我单击应用程序中的按钮时没有任何反应。

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

【问题讨论】:

    标签: ios uibutton uiimage


    【解决方案1】:

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

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

    编辑:

    想想 CSS。有时您可能想要设置当有人将鼠标悬停在链接上或当有人已经点击链接时的颜色。

    您不会在“悬停/点击时”执行此操作。您可以在开始时预先设置 what 样式将是 mouseOvervisited

    换句话说,你是在告诉你的程序,当有人选择我的按钮时,如果它真的发生了,就把图像变成这样。

    您不必等到有人点击后才知道点击时将使用什么图片。在您的示例中选中的图像在点击之前已经知道。例如,如果所选图像取决于您单击的按钮部分,情况就会有所不同。

    另一种说法:假设您是老板,需要向您的团队指示发生火灾时该怎么做。

    如果您不关心向哪个团队成员提供指导或火灾发生在哪里,等等,你可能会说:“当火灾发生时out,从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 时,执行操作 EXIT B。”

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

    【讨论】:

    • 检查我编辑的问题。是这样吗? @tacos_tacos_tacos
    • 不 - 你不需要条件 if (facebook.selected) - 我正在编辑我的答案以澄清
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多