UIButton图像仅更改为一个按钮

时间:2013-02-26 11:30:14

标签: ios uiimageview uibutton uiimage iboutlet

我编写了一些代码,根据选择的按钮切换2个按钮。如果选择了英国一个,它就会被勾选,而一个BR会被取消,反之亦然。但是,这似乎只是英国按钮的情况。如果我选择BR按钮而不是英国按钮取消按钮,则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设置为其动作,并且每次单击仅调用该函数。

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

如果有人能说清楚为什么会发生这种情况,那么我将非常感激。

1 个答案:

答案 0 :(得分:2)

设置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。