2014-05-23 4 views
0

초보자를 objective-c로 지정하므로 기본적인 실수는 용서하십시오.objectAtIndex 메서드를 호출하여 임의의 색상을 얻으려고

목표는 predictionLabel.textColor을 배열의 임의 색상으로 설정하는 것입니다.

// fill array colors 
self.colors = @[@"redColor", @"greenColor", @"blueColor", @"greyColor", @"orangeColor", @"purpleColor"]; 

// get random number based on array count 
int randomColor = arc4random_uniform(self.colors.count); 

// set predictionLabel.textColor to random color 
self.predictionLabel.textColor = [UIColor [self.colors objectAtIndex:randomColor]]; 

나는 [UIColor [self.colors에서 오류 메시지 "예상 식별자를"점점 계속.

새로운 기능이므로이 문제를 해결하는 데 어려움이 있습니다. 어떤 충고?

+0

방법의 결과는 컴파일 시간 상수로 사용할 수 없습니다. – CrimsonChris

+0

당신이 마음에 이런 것 같아요. 'self.predictionLabel.textColor = [[UIColor class] performSelector : NSSelectorFromString (randomColor);'이것은 겁나는 코드입니다. 아론의 대답을 사용하십시오. – CrimsonChris

답변

2

원하는 경우 키 값 코딩을 사용하고 있지 않습니다. UIColor에있을 수있는 메서드 이름을 추측하고 있습니다. 클래스 메서드의 이름 대신 UIColor 배열을 사용하지 않는 것이 좋습니다. 이와 같이 :

self.colors = @[[UIColor redColor], [UIColor greenColor], [UIColor blueColor], [UIColor grayColor], UIColor orangeColor], [UIColor purpleColor]]; 

// get random number based on array count 
int randomColor = arc4random_uniform(self.colors.count); 

// set predictionLabel.textColor to random color 
self.predictionLabel.textColor = [self.colors objectAtIndex:randomColor]; 

또한 "회색"대 "회색"의 맞춤법을 관찰하십시오. [UIColor greyColor] 존재하지 않습니다. 당신이 뭘 하려는지

+0

클래스의 특정 키 값을 호출하기 위해 텍스트 기반 메서드를 사용하려면 @ moby의 대답을 사용하십시오. 그는 당신이 원하는 것을 얻었습니다. – Aaron

+1

이 솔루션은 배열에 색상을 넣을 수 있기 때문에 훨씬 우수합니다. 내장 된'UIColor' 객체의 문자열 표현을 사용하는 것은 매우 제한적입니다. – rmaddy

2

는 일을 같이하다 : 단지 컴파일하지 유효한 구문하지 않습니다

[UIColor @"redColor"]; 

.

당신이 문자열을 사용하여 주장하는 경우, 당신은 할 수 :

self.predictionLabel.textColor = [UIColor valueForKey:[self.colors objectAtIndex:randomColor]]; 
+0

결과는 런타임에만 알 수 있습니다. – CrimsonChris