2013-02-26 72 views
0

我已经写了一些代码,这取决于选择哪一个来切换2个按钮。如果选择了英国的​​话,它会变成勾号,无线电通信协议会变成未加密的,反之亦然。但是,这似乎只适用于英国按钮。如果我选择了BR按钮而不是UK按钮,BR按钮会短暂地打勾,但随后会再次打开。UIButton图像只改变一个按钮

我已经正确地链接了我的按钮(我有三重检查),并且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设置为其操作,并且该功能仅在每次单击时调用一次。

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

如果任何人都可以解释为什么会发生这种情况,那么我将非常感激。

回答

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的属性返回即使按钮没有被显示 又一个值。系统按钮的属性值为零。

+0

工作完美,谢谢。我假设英国的一个运作正常,代码是正确的。谢谢 – 2013-02-26 12:57:59