我创建了一个自定义UIButton,它有一个“选中”字段来标识该按钮是否被选中 . 默认情况下:它将其图像设置为image1 . 选择它后,它将更改为image2 .
@interface MyButton: UIButton
@property (getter=isSelected, setter=setSelected:) BOOL selected;
@end
@implementation MyButton
@synthesize selected = _selected;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.selected = NO;
}
return self;
}
-(void) setSelected:(BOOL)selected
{
if (selected)
{
[self setImage:[UIImage imageNamed:@"image1"] forState:UIControlStateNormal];
}
else
{
[self setImage:[UIImage imageNamed:@"image2"] forState:UIControlStateNormal];
}
_selected = selected;
}
-(BOOL) isSelected
{
return _selected;
}
现在,从UIViewController,我将这个自定义按钮添加到它的视图中 . 当用户单击另一个按钮时,我希望我的自定义按钮应该更改其图像(从image1 - > image2和反之亦然) .
@interface SessionViewController (){
MyButton* btn;
}
@end
@implementation ViewController
- (void) viewDidLoad
{
[super viewDidLoad];
btn = [[MyButton alloc] initWithFrame: CGRectMake(0,0,100,100)];
}
- (IBAction) touchChangeStateButton
{
BOOL b = btn.isSelected;
btn.selected = !b;
}
@end
我的问题是为什么我的自定义按钮不会改变它的图像???谢谢 .
2 回答
我认为问题在于UIButton的内置选定属性会干扰您的自定义属性 . 我尝试将名称更改为'selacted'(只是为了使其不同)并更改了所有相应的代码,如下所示,它似乎按预期工作 .
然后在你的viewController中:
改变这个:
有了这个:
或者,您可以通过init方法一次性定义两个图像