【问题标题】:UIButton image only changes for one buttonUIButton 图像仅更改一个按钮
【发布时间】:2013-02-26 11:30:13
【问题描述】:

我编写了一些代码,根据选择的按钮切换 2 个按钮。如果选择了英国,则它会打勾,而 BR 则不打勾,反之亦然。然而,这似乎只是英国按钮的情况。如果我选择 BR 按钮而不是 UK 按钮取消勾选,则 BR 按钮会短暂勾选,但随后会再次取消勾选。

我已经正确地连接了我的按钮(我已经检查了三次),并且当 BR 按钮短暂滴答时,它肯定是连接起来的。我使用的代码如下:

.h

@property (weak) IBOutlet UIButton *btUK;
@property (weak) IBOutlet UIButton *btBR;

.m

- (IBAction)changePortal:(id)sender
{
    UIButton *button = (UIButton *)sender;

    if (button.tag == kUKButton)
    {
        self.btUK.imageView.image = [UIImage imageNamed:@"tick_box.png"];
        self.btBR.imageView.image = [UIImage imageNamed:@"tick_box_empty.png"];
        [Singleton sharedSingleton].bUseUKPortal = YES;
    }
    else if (button.tag == kBRButton)
    {
        self.btBR.imageView.image = [UIImage imageNamed:@"tick_box.png"];
        self.btUK.imageView.image = [UIImage imageNamed:@"tick_box_empty.png"];
        [Singleton sharedSingleton].bUseUKPortal = NO;
    }
}

我在代码中设置了断点,并确认两个按钮在单击时都会进入其相关部分。我还可以确认没有其他代码在使用 btUK 和 btBR 变量,因为我刚刚写了所有代码。

两个按钮都将 changePortal 设置为它们的操作,并且每次点击该函数只会调用一次。

我也尝试过清理代码,但这并没有解决我的问题。

如果有人能解释为什么会发生这种情况,我将不胜感激。

【问题讨论】:

    标签: ios uiimageview uibutton uiimage iboutlet


    【解决方案1】:

    设置UIButton 的图像的正确方法是调用setImage:forState:。 所以试着把你的代码改成这样:

    // Follow this pattern for every button image change
    [self.btUK setImage:[UIImage imageNamed:@"tick_box.png"] forState:UIControlStateNormal];
    


    现在关于 imageView 属性,documentation 声明:

    按钮的图像视图。 (只读)

    @property(nonatomic, readonly, retain) UIImageView *imageView
    

    讨论

    虽然这个属性是只读的,但它自己的属性是 读/写。使用这些属性来配置外观和 按钮视图的行为。例如:

    UIButton *button = [UIButton buttonWithType: UIButtonTypeRoundedRect];
    button.imageView.exclusiveTouch = YES;
    

    即使按钮没有被按下,imageView 属性也会返回一个值 尚未显示。系统按钮的属性值为 nil。

    【讨论】:

    • 完美运行,谢谢。我假设英国的一个运行正常,代码是正确的。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多