我编写了一些代码,根据选择的按钮切换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设置为其动作,并且每次单击仅调用该函数。
我也尝试过清理代码,但这并没有解决我的问题。
如果有人能说清楚为什么会发生这种情况,那么我将非常感激。
答案 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。