2014-09-16 3 views
0

나는 UIButton 객체의 배열을 가지고 있습니다. (나는 15 개의 버튼을 가지고 있으므로 쉽게 처리 할 수 ​​있도록 배열에 저장하고 싶습니다). 배열을 반복하고 배경 이미지/버튼이 사용하는 이미지를 변경하고 싶습니다. UIButtons의 배열은 버튼 이미지를 변경할 수 없습니다.

@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 작품 viewWillAppear

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

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

} 

두 번째 줄에 다음을하고 버튼의 이미지를 변경 : 이것은 내가 현재이 설정 한 방법이다. 그러나 세 번째 줄은 그렇지 않습니다. 디버거는 오류를 발생시키지 않고 해당 행에 도달하는 코드를 표시하므로 버튼이 배열에있을 때 버튼 이미지를 설정하는 것이 왜 작동하지 않을지는 알 수 없습니다.

아이디어가 있으십니까? 이 당신의 대답에 마지막 줄을 교체

+0

버튼 배열을 할당 하시겠습니까? – faviomob

+0

코드 샘플에서 배열 할당이 누락되었습니다. self.buttonArray = [NSMutableArray new]; –

답변

0

시도 :

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

하지만 [

말해 첫 브래킷을 배치 할 위치에 대한 정말 모르겠어요 그래서 컴파일러없이하고 있어요 작동한다면, 나는 그것에 대해 완전히 확신하지 못합니다.

관련 문제