2011-12-27 15 views
0

私の代議員には、NSIntegerのhealthIntがあります。 NSMutableString * healthStringです。 appDelegate.mでは、私はhealthIntの値を保持するようにhealthStringを設定しました。その後、別のビューで私はUILabel * healthLabelを持っています。そして、私はhealthLabelを次のコードでhealthStringを表示するように設定しました。UILabelをグローバルNSStringで更新する

healthLabel.text = [NSString stringWithFormat:@"%@", appDelegate.healthString]; 

これは、私がappDelegateでhealthIntを設定した番号100を表示して表示します。しかし、UIImageViewのmainSpriteが別のImageViewと衝突したとき、healthIntは2だけ減少するはずです。私はそれがログで起こるのを見ることができるので、私はそれを知ることができます。ログは変化してゆっくりと減少するhealthIntの値を表示しますが、healthIntが減少すると、healthLabelは更新されません。私の質問は、healthIntが減少すると、このhealthLabelをどのように更新するのですか? mainSpriteと他のImageViewとの間の衝突検出のためのコードを入れてみましたが、それは損傷を引き起こしますが動作しないようです。ありがとう!

答えて

2

healthIntまたはhealthStringが変更されるたびにUILabelを更新するには、いくつかの方法があります。

のセッターメソッド(または@synthesizeの代わりに1つを作成)に入り、healthIntの番号が変更されるたびにをブロードキャストする方法もあります。そのラベルが表示されているビューが表示されたら、その通知に登録されたオブザーバーにラベルを変更させます。

別の方法は、キー値コーディング&を使用して、UILabelのテキストフィールドをhealthStringにバインドすることです。 Here is a related question that may help you use this possible solution

+0

提案した最初の方法を説明するチュートリアルをお勧めしますか? –

+0

[NSNotificationCenter'を介してメッセージを送受信することについてのこの質問](http://stackoverflow.com/questions/2191594/how-to-send-and-receive-message-through-nsnotificationcenter-in-objective-c )... –

+0

ええ、私はそれを見て、私は本当に理解していない。このメソッドを使ってUILabelを更新するにはどうすればいいですか?そして、私はこれをappDelegateに入れなければならないのですか、それとも他のクラスでやるべきでしょうか? –

関連する問題