2011-12-19 1 views
-5

특정 조건이 충족되지 않을 때 경고로 사용되는 레이블이 있습니다. 나는 다음과 같은 코드를 숨겨에 레이블을 설정하려고 시도 때 : 내가 생각레이블을 숨김으로 설정하려고하면 IOS 5 오류가 발생합니다.

if (weightC < 50 || (waistM1 < 20 && waistM2 < 20 && waistM3 < 20) || (ageC < 18)) 
{ 
    infoWarning.hidden = NO; 

    NSString *warning = @""; 
    if(ageC < 18) 
    { 
     warning = @" an age over 17"; 
    } 
    if (averageWaistM < 20) { 
     if (warning != @"") { 
      warning = [NSString stringWithFormat:@"%@, and", warning]; 
     } 
     warning = [NSString stringWithFormat:@"%@ a waist measurement", warning]; 
    } 
    if (weightC < 50) { 
     if (warning != @"") { 
      warning = [NSString stringWithFormat:@"%@, and", warning]; 
     } 

     warning = [NSString stringWithFormat:@"%@ a weight", warning]; 

    } 


    if ([email protected]"") { 
     [infoWarning setText:[NSString stringWithFormat:@"Please add%@.", warning]] ; 
    } 


} else { 
    if(gender.selectedSegmentIndex == 0) 
    { 

    } 

    else if(gender.selectedSegmentIndex == 1) 
    { 

    } 
} 

(명백하게) 작동하지만 것입니다하지 않습니다 문맥

infoWarning.hidden = YES; 

을, 여기에 전체 코드 . 줄에서 EXC_BAD_ACCESS 오류가 발생합니다.

infoWarning.hidden = YES;

infoWarning은 합성되어 Interface Builder의 UILabel에 연결됩니다. 문제를 확인하고 문제를 해결하도록 도와 주시겠습니까?

이것은 .H 파일입니다

#import <UIKit/UIKit.h> 
#import <QuartzCore/QuartzCore.h> 

@class Preferences; 
@class Utilities; 


@interface BodyFatCalculatorViewController : UIViewController { 

    IBOutlet UITextField *age; 
    IBOutlet UITextField *waist1; 
    IBOutlet UITextField *waist2; 
    IBOutlet UITextField *waist3; 
    IBOutlet UITextField *weight; 

    IBOutlet UILabel *waist; 
    IBOutlet UILabel *currentWeight; 

    IBOutlet UILabel *bodyFat; 
    IBOutlet UILabel *averageWaist; 
    IBOutlet UILabel *veryLean; 
    IBOutlet UILabel *veryLeanBorder; 
    IBOutlet UIImageView *veryLeanCheckmark; 
    IBOutlet UILabel *fit; 
    IBOutlet UILabel *fitBorder; 
    IBOutlet UIImageView *fitheckmark; 
    IBOutlet UILabel *average; 
    IBOutlet UILabel *averageBorder; 
    IBOutlet UIImageView *averageCheckmark; 
    IBOutlet UILabel *atRisk; 
    IBOutlet UILabel *atRiskBorder; 
    IBOutlet UILabel *atModRisk; 
    IBOutlet UILabel *atModRiskBorder; 
    IBOutlet UILabel *atHighRisk; 
    IBOutlet UILabel *atHighRiskBorder; 

    IBOutlet UILabel *infoWarning; 

    IBOutlet UISegmentedControl *gender; 

    NSMutableArray *arrayAge; 
} 

@property (nonatomic, retain) IBOutlet UITextField *age; 
@property (nonatomic, retain) IBOutlet UITextField *waist1; 
@property (nonatomic, retain) IBOutlet UITextField *waist2; 
@property (nonatomic, retain) IBOutlet UITextField *waist3; 
@property (nonatomic, retain) IBOutlet UITextField *weight; 

@property (nonatomic, retain) IBOutlet UILabel *waist; 
@property (nonatomic, retain) IBOutlet UILabel *currentWeight; 

@property (nonatomic, retain) IBOutlet UILabel *bodyFat; 
@property (nonatomic, retain) IBOutlet UILabel *averageWaist; 
@property (nonatomic, retain) IBOutlet UILabel *veryLean; 
@property (nonatomic, retain) IBOutlet UILabel *veryLeanBorder; 
@property (nonatomic, retain) IBOutlet UIImageView *veryLeanCheckmark; 
@property (nonatomic, retain) IBOutlet UILabel *fit; 
@property (nonatomic, retain) IBOutlet UILabel *fitBorder; 
@property (nonatomic, retain) IBOutlet UIImageView *fitCheckmark; 
@property (nonatomic, retain) IBOutlet UILabel *average; 
@property (nonatomic, retain) IBOutlet UILabel *averageBorder; 
@property (nonatomic, retain) IBOutlet UIImageView *averageCheckmark; 
@property (nonatomic, retain) IBOutlet UILabel *atRisk; 
@property (nonatomic, retain) IBOutlet UILabel *atRiskBorder; 
@property (nonatomic, retain) IBOutlet UILabel *atModRisk; 
@property (nonatomic, retain) IBOutlet UILabel *atModRiskBorder; 
@property (nonatomic, retain) IBOutlet UILabel *atHighRisk; 
@property (nonatomic, retain) IBOutlet UILabel *atHighRiskBorder; 

@property (nonatomic, retain) IBOutlet UILabel *infoWarning; 

@property (nonatomic, retain) IBOutlet UISegmentedControl *gender; 

-(IBAction)valueChanged:(id)sender; 
-(IBAction)textFieldDoneEditing:(id)sender; 
-(void)calculate; 


@end 

문제가 수정되었습니다, 반응하고 그것으로보고 사람들에게 감사합니다. 문제는 실제로 너무 작은 한계가있는 배열이었습니다 (왜 이렇게 깨뜨 렸는지, 전혀 관련이없는 이유는 모르겠지만). 그래서 제한을 늘렸고 이제는 infoWarning이 훌륭하게 작동합니다. @property@synthesize 문은 무엇

+3

글쎄, 아마 당신은 우리에게 당신이 YES로 숨겨진 설정 라인을 보여 주어야한다? –

+1

그래서 오류를주는 코드는 실제로 질문에 넣은 코드가 아닙니다. infoWarning의 선언, 속성 등을 표시하고 숨길 방법을 알려주시겠습니까? – jrturton

+0

@ Hot Licks : the infoWarning.hidden = YES; 오류가있는 정확한 행입니다. @jrturton : 게시물을 편집하고 추가 할 것입니다. 죄송합니다. – Zeff520

답변

3

infoWarning.hidden = NO; 

infoWarning.hidden에 문제가 있음을 시사 라인에 "EXC_BAD_ACCESS 오류"도움이되지만 주어진 수있는 콘솔에서 전체 오류인가?

문자열의 내용이 사용 비교하려면 :

[warning is equalToString:@""] 

하지 : 문자열에 대한 포인터를 비교

warning != @"" 

.

그러나 귀하의 경우

은 왜 그냥 사용

warning.length != 0 
+0

우수한 팁. 나는 그것을 변경했다. 그러나 문제는 내가 숨겨진 것으로 선언 한 방법에있는 것처럼 보이고 내 코드는 여전히 작동하지 않는다. – Zeff520

+0

BTW, 내가 당신에게 요청한 로그 정보를 제공해 드리고 싶지만 어떻게 될지 모르겠다는 것을 인정하는 것이 두렵습니다 ... – Zeff520