我有一组UIButton对象(我有15个按钮,所以我想将它们存储在一个数组中以便于处理)。我希望能够遍历数组并更改按钮使用的背景图像/图像。这就是我目前设置的方式:
@property (nonatomic, weak) UIImage *greenLight;
@property (nonatomic, weak) UIImage *yellowLight;
@property (nonatomic, weak) UIImage *redLight;
@property (weak, nonatomic) IBOutlet UIButton *task1Button;
@property (weak, nonatomic) IBOutlet UIButton *task2Button;
@property (weak, nonatomic) IBOutlet UIButton *task3Button;
@property (nonatomic, copy) NSMutableArray *buttonArray;
- (instancetype)init
{
self = [super init];
if(self){
[self.buttonArray addObject:self.task1Button];
[self.buttonArray addObject:self.task2Button];
[self.buttonArray addObject:self.task3Button];
self.greenLight = [UIImage imageNamed:@"greenlight.ICO"];
self.yellowLight = [UIImage imageNamed:@"yellowlight.ICO"];
self.redLight = [UIImage imageNamed:@"redlight.ICO"];
NSLog(@"init complete...");
}
return self;
}
然后我在viewWillAppear
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.task1Button setImage:self.redLight forState:UIControlStateNormal];
[(UIButton *)self.buttonArray[1] setImage:self.greenLight forState:UIControlStateNormal];
}
viewWillAppear
中的第二行有效并更改了按钮的图像。然而,第三行却没有。调试器显示到达该行的代码并且没有抛出任何错误,所以我不知道为什么当按钮在数组中时设置按钮图像不起作用。
有什么想法吗?
答案 0 :(得分:0)
尝试使用以下内容替换答案中的最后一行:
[(UIButton *)[self.buttonArray objectAtIndex:1] setImage:self.greenLight forState:UIControlStateNormal];
但我没有编译器这样做,所以我不确定在哪里放置第一个括号[
告诉我它是否有效,我对此并不十分肯定。