2011-12-27 3 views
0

내 대리인에서 NSInteger healthInt가 있습니다. 및 NSMutableString * healthString. appDelegate.m에서 나는 healthInt의 변경 값을 보유 할 healthString을 설정했습니다. 그런 다음 다른보기에서 나는 UILabel * healthLabel을가집니다. 그리고 다음 코드로 healthString을 표시하도록 healthLabel을 설정했습니다.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을 업데이트하려면 몇 가지 방법이 있습니다.

한 가지 방법은 healthInt에 대한 설정 도구 방법 (또는 @synthesize 대신 하나 생성)을 사용하고 healthInt 번호가 변경 될 때마다 NSNotification을 브로드 캐스팅하는 것입니다. 그런 다음 해당 레이블이있는보기가 표시되면 관찰자가 해당 알림을 수신하도록 설정하고 레이블을 변경하십시오.

또 다른 방법은 키 값 코딩 &을 사용하여 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에 넣어야합니까, 아니면 다른 클래스에서해야합니까? –

관련 문제