2011-12-19 9 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に隠されたセットのラインが表示されているはずです? –

+1

エラーを出すコードは実際にあなたが質問に入れたコードではありませんか? infoWarningの宣言、プロパティなどを表示することができますか、それを隠そうとしている方法を教えてください。 – jrturton

+0

@ Hot Licks:infoWarning.hidden = YES;エラーが発生した正確な行です。 @jrturton:投稿を編集して追加します。ごめんなさい。 – Zeff520

答えて

3
コンソールからの完全なエラーが役立つかもしれないが、

ラインで「EXC_BAD_ACCESSエラー」与えられた

infoWarning.hidden = NO; 

infoWarning.hiddenに問題があることを示唆し、@property@synthesize書類は何ですか?文字列の内容を比較するために、

は使用:

[warning is equalToString:@""] 

ない:

warning != @"" 

文字列へのポインタを比較します。

しかし、あなたの場合には理由だけでは使用しない:

warning.length != 0 
+0

優れた先端。私はそれを変更しましたが、問題は隠されたと宣言しているように見えますが、私のコードはまだ動作しません。 – Zeff520

+0

ところで、私はあなたに尋ねたログ情報を提供したいと思っていますが、私はどのようにわからないのでしょうか? – Zeff520

関連する問題