2012-07-10 2 views
1

보기가로드 될 때 제목을 부여하고자하는 버튼이 많습니다. 단추 제목은 달의 날짜에 따라 다릅니다. 따라서 모든 버튼의 이름을 가진 배열을 만들었습니다. 다음과 같이 내 코드는 다음과 같습니다배열에서 선택된 버튼의 제목 설정 - Xcode iOS

내 인터페이스 :

@property (strong, nonatomic) IBOutlet UIButton *button1; 
@property (strong, nonatomic) IBOutlet UIButton *button2; 
@property (strong, nonatomic) IBOutlet UIButton *button3; 
@property (strong, nonatomic) IBOutlet UIButton *button4; 
@property (strong, nonatomic) IBOutlet UIButton *button5; 
@property (strong, nonatomic) IBOutlet UIButton *button6; 
@property (strong, nonatomic) IBOutlet UIButton *button7; 
@property (strong, nonatomic) IBOutlet UIButton *button8; 
@property (strong, nonatomic) IBOutlet UIButton *button9; 
@property (strong, nonatomic) IBOutlet UIButton *button10; 

내 구현 :

@synthesize button1 = _button1; 
@synthesize button2 = _button2; 
@synthesize button3 = _button3; 
@synthesize button4 = _button4; 
@synthesize button5 = _button5; 
@synthesize button6 = _button6; 
@synthesize button7 = _button7; 
@synthesize button8 = _button8; 
@synthesize button9 = _button9; 
@synthesize button10 = _button10; 

NSArray *myArray = [NSArray arrayWithObjects: @"dummyButton", @"_button1", @"_button2", @"_button3", @"_button4", @"_button5", @"_button6", @"_button7", @"_button8", @"_button9", @"_button10", nil]; 

for (int i = varDefinedEarlier; i<=totalAmountOfNeededTitles; i++) { 
    NSString *theTitleSting = [NSString stringWithFormat:@"%i",i]; 
    NSLog(@"arrayValue:%@", [myArray objectAtIndex:i]); //Works prints the button name (for example _button7) 


    [[myArray objectAtIndex:i] setTitle:theTitleSting forState:UIControlStateNormal]; 
//The line above is where the app crashes. Everything else works just fine. 
} 

나에게 제공하는 오류는 "스레드 1 : 신호 SIGABRT

에게

게다가, 이것은 로그가 말하는 것입니다 :

,210

- [__ NSCFConstantString setTitle이라는 : ​​forState :] : 체인 [10302 : 707] 브레이크하지 마십시오 49.649 : 57 : 인식 할 수없는 선택 예를 0x14a48에 2012-07-10 22 전송 응용 프로그램을 종료를 * * * 때문에 캐치되지 않는에 예외 'NSInvalidArgumentException'이유 '- [__ NSCFConstantString setTitle이라는 : ​​forState :] : 미정 선택기 인스턴스 0x14a48 전송' * * * 우선 투사 호출 스택 : (0x3774788f 0x3544c259 0x3774aa9b 0x37749915 0x376a4650 0xdc2f 0x31454c8b 0x314611e9 0x31461059 0x31460f3f 0x3146070b 0x31460503 0x31454aff 0x314547d5 0x314cd903 0x31547627 0x37fb8933 0x3771ba33 0x3771b699 0x3771b699 0x3769d4a5 0x3769d36d 0x33e5c439 0x31449cd5 0xb7cf 0xb774) 예외를 던지기 위해 호출되는 종료 (lldb)

나는 오류가 응용 프로그램의 마녀 버튼에 제목을 설정해야한다고 말하는 방법이라고 생각하지만 실제로 배열의 값을 가져 와서 사용하는 방법을 알 수는 없습니다. 버튼 이름. 당신은 버튼 인스턴스하지만 배열 내 일부 문자열을 참조하지 않는

답변

2

)

나는 아이폰의 iOS 개발에 아주 새로운, 그래서 대답은 간단 경우 나와 함께 곰. 이제 루프 내에서 NSString 인스턴스에 대해 존재하지 않는 문자열에 대해 setTitle : forState : 메서드를 호출하려고합니다. 의도 코드가 잘 작동합니다 같이

NSArray *myArray = [NSArray arrayWithObjects:_button1, _button2, _button3, _button4, _button5, _button6, _button7, _button8, _button9, _button10, nil]; 

이것은 당신의 배열에 실제 버튼 인스턴스를 배치합니다 :

은 다음보십시오. 물론 - -

+1

도움이되기를 바랍니다 .. 간단한 대답;) 대단히 감사합니다. 그것은 완벽하게 일했다 :) – MortenHC

+0

위대한, 나의 즐거움. 건배! – Till

1

당신이 문자열 유형으로 setTitle이라는 메시지를 전달하는 순간에 [myButton setTitle:[myArray objectAtIndex:i] forState: UIControlStateNormal]

뭔가를해야 충돌이 발생할해야 ... 내가 말했듯이