2011-12-21 7 views
-1

inthealthInt에서 2를 뺀 방법이 있습니다. 그런 다음 healthString이라는 NSString이 표시되고 이는 healthInt으로 표시됩니다. 그래서이 방법에서 내가하고 싶은 것은 take2Damage입니다. healthInt에서 2를 뺍니다. healthLabelUILabel으로 설정할 경우 healthString으로 설정하십시오. 문제는 다른 클래스에있는 healthLabel입니다. 여기에 몇 가지 코드가 있습니다.AppDelegate.m의 다른 클래스에서 UILabel에 액세스

Appdelegate.m

-(void)take2Damage{ 
healthInt = healthInt - 2; 

} 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions 
{ 
healthInt = 100; 
healthString = [[NSString alloc]initWithFormat:@"%d", healthInt]; 

LevelOneViewController.m

IBOutlet UILabel * healthLabel; 
+0

작동하지 않는 것을 말하지 않았습니다. – jrturton

답변

1

귀하의 디자인을 원하는,하지만 여기 당신이가는 :

self.healthLabel = (YourAppDelegate *)[[[UIApplication sharedApplication] delegate] healthString]; 

을하지만 다시 나는 당신의 디자인을 변경 스트레스 것 appDelegate에서 이런 종류의 일이 발생하지 않도록하는 것입니다. 싱글 톤 상태 유형을 사용하는 것을 고려해보십시오. 단순한 상태로 유지하는 것이 좋습니다.

는 편집 :

이 좀 더 명확하게하기 위해, 이것은 내가 현재의 상황을 이해하는 방법이다. AppDelegate 클래스에서 healthInt, healthLabel을 속성으로 정의하고 -(void)take2Damage을 정의했습니다. healthInt은 플레이어의 건강을 저장하며, healthLabel은 그 건강을위한 사용자 친화적 인 문자열이며 take2DamagehealthInt에서 두 개의 피해를 뺍니다.

healthInt, healthString 또는 take2Damage에서 액세스하려는 다른 클래스가 있습니다. 그 클래스를 GameViewController이라고 부르 자. 그러므로 어느 방법이든 GameViewController과 관련이 있다면 위의 코드를 사용해야합니다. 당신이 GameViewController에 대한 .h 파일에#import AppDelegate.h해야합니다

참고.

아무 이유없이 작동하지 않아야합니다. 만큼 당신이 같은 당신의 AppDelegate의 속성을 정의한 같이

@property (nonatomic, assign) NSInteger healthInt; @property (nonatomic, retain) NSString *healthString; -(void)take2Damage;

@synthesize이 '를 개발, 당신은 잘되어야합니다.

행운을 빈다.

+0

그래서 나는 이것을 "take2damage"방법에 넣었습니까? –

+0

아니요, 당신은'take2damage' 메소드에 넣지 않습니다. 실제로, 당신은 어느 클래스에서 당신이 그것을 부르고 있는지를 넣습니다. 또한, 당신을 도우려는 것에 대한 사과 :-) 행운을 빈다. –

+0

미안하지만 미안해. 나는 하루 종일 이렇게 하루 종일 그래서 나는 정말로 좌절감을 느낀다. 어쨌든 고마워. –

관련 문제