0

私のアプリデリゲートにはhealthIntというNSIntegerがあります。アプリデリゲートでは、healthIntを100に設定しています。また、アプリケーションが最初のビューをロードするとき、healthIntは100に等しいです。しかし、次のビューをロードするとき、healthIntは0に設定されます。 healthLabel)は100を表示します。これが問題になる理由は、私がやりたいのは

-(void)viewDidLoad{
   if(appDelegate.healthInt <= 0){
   healthLabel.text = @"Dead";
  }
}

しかし、これはうまくいかないようです。これは悪いアーキテクチャですが、プロジェクト全体をやり直すには少し遅すぎます。他のコードを見る必要がある場合は、喜んでお見せします:)

4

1 に答える 1

1

コメントに同意します。appDelegateプロパティがnullでないことを確認してください。もしそうなら、あなたは使うことができます

id<UIApplicationDelegate> appDelegate = [UIApplication sharedApplication].delegate 

もう一度取得します。

[編集]デリゲートから「healthInt」を取得するには、appDelegateをクラスタイプにキャストする必要があります。

MyAppDelegate *myApp = (MyAppDelegate *)[UIApplication sharedApplication].delegate

[2回目の編集]DUH!あなたのサンプルコードがあなたのviewDidLoadにあるのを見ませんでした。ホットリックスは正しいです。デリゲートを呼び出す前に、ViewControllerでデリゲートを設定する必要があります。

これを試して:

-(void)viewDidLoad{

appDelegate = [[UIApplication sharedApplication] delegate];
     if(appDelegate.healthInt <= 0){
     healthLabel.text = @"Dead";
    }
    }

お役に立てれば。

ロブ

于 2012-01-06T00:42:39.763 に答える