여기에 자비를 베푸십시오.NSString 값을 사용하여 UILabel을 참조하십시오.
저는 UILabel 인스턴스의 이름 인 즉석에서 생성하는 NSString 값을가집니다. 레이블을 보내 텍스트를 업데이트하는 메시지를 보내려고합니다. 그러나 두 데이터 유형이 일치하지 않습니다.
헤더 파일에서 :
IBOutlet UILabel *Clue1; // IBOutlet and IBAction are IDE flags
IBOutlet UILabel *Clue2; // IB = interface builder
IBOutlet UILabel *Clue3;
구현 파일에서 : 여기에 충분한 코드는 (내가 생각하는)의이 SO에 대한 몇 가지 비슷한 질문이지만, 아무도가 나를 위해 충분히 가까이하지
- (IBAction) newPuzzle:(id)sender { // Clear all fields & get new clue
[Clue1 setText:@""]; // Clear the fields
[Clue2 setText:@""];
[Clue3 setText:@""];
// Send up a randomly chosen new clue
NSArray *clues = [NSArray arrayWithObjects:@"222", @"333", nil];
NSInteger randomIndex = arc4random()%[clues count];
NSString *aClue = [clues objectAtIndex:randomIndex];
// The clue will be split into component digits and each piece sent to a different label
for (NSInteger charIdx = 0; charIdx < aClue.length; charIdx++) {
NSString *cluePos = [NSString stringWithFormat:@"Clue%d", charIdx + 1];
NSLog(@"%@", cluePos); // works
[cluePos setText:@"test"]; // Xcode notes the type mismatch
}
}
그들이 적어도 내가 말할 수있는 한 그들이 내 사건에 적용된다는 것을 인정한다. 다른 언어 (R)의 용어를 사용하여 cluePos의 클래스를 NSString에서 UILabel로 강제 변환해야합니다. Xcode 4.2.1 및 OSX 10.7.2를 사용 중입니다.
TIA.
감사합니다. 대체가 어떻게 작동하는지 정확히 알기 위해 valueForKey와 속성을 조금 공부해야합니다. label.text = @ "test"대신 텍스트를 변수로 지정하고 싶습니다. 특히 [aClue characterAtIndex : charIdx]를 표시 할 값으로 전달하려고합니다. 어떻게 그 방법을 제안 할 수 있습니까? 아직도 배우기! 고맙습니다. –
주어진 색인에서 문자를 가져 오려면 대신 [aClue substringWithRange : NSMakeRange (charIdx, 1)]을 시도하십시오. 이렇게하면 한 문자만큼 긴 문자열을 반환하므로 unichar보다 쉽게 작업 할 수 있습니다. –
감사합니다, 매력처럼 작동합니다. 더 많은 공부를하지만, 이것이 내가 가장 잘 배울 수있는 방법입니다. 다시 고마워. –