2011-12-19 41 views
-5

當某些條件未得到滿足時,我有一個標籤用作警告。但是,當我試圖設置爲隱藏用下面的代碼標籤:嘗試將標籤設置爲隱藏時發生IOS 5錯誤

infoWarning.hidden = YES; 

上下文,這裏是全碼:

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) 
    { 

    } 
} 

那我想會的工作,但(顯然)不。它給我一條線上的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工作的很好。

+3

好吧,也許你應該告訴我們,您可以設置隱藏到YES行? – 2011-12-19 21:08:23

+1

那麼,給你錯誤的代碼實際上並不是你在問題中提出的代碼?你能顯示infoWarning的聲明,屬性等,並告訴我們你試圖隱藏它的方法嗎? – jrturton 2011-12-19 21:10:27

+0

@ Hot Licks:infoWarning.hidden = YES;是它有錯誤的確切線。 @jrturton:我將編輯帖子並添加這些內容。抱歉。 – Zeff520 2011-12-19 21:13:00

回答

3

從控制檯完整的錯誤可能有助於但鑑於「EXC_BAD_ACCESS錯誤」的行

infoWarning.hidden = NO; 

表明,有與infoWarning.hidden一個問題,什麼是@property@synthesize報表?

比較字符串的內容使用:

[warning is equalToString:@""] 

不是:

warning != @"" 

該指針比較字符串。

但在你的情況下爲什麼不使用:

warning.length != 0 
+0

優秀的提示。我改變了這一點,但問題在於我如何聲明隱藏它似乎,我的代碼仍然無法正常工作。 – Zeff520 2011-12-20 22:50:56

+0

順便說一句,我很樂意給你所問的日誌信息,但我不敢承認我不知道如何...... – Zeff520 2011-12-20 23:06:48

相關問題