一组UIButtons,无法更改按钮图像

时间:2014-09-16 17:18:03

标签: objective-c arrays uibutton

我有一组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中的第二行有效并更改了按钮的图像。然而,第三行却没有。调试器显示到达该行的代码并且没有抛出任何错误,所以我不知道为什么当按钮在数组中时设置按钮图像不起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

尝试使用以下内容替换答案中的最后一行:

[(UIButton *)[self.buttonArray objectAtIndex:1] setImage:self.greenLight forState:UIControlStateNormal];

但我没有编译器这样做,所以我不确定在哪里放置第一个括号[

告诉我它是否有效,我对此并不十分肯定。