从AppDelegate.m中的另一个类访问UILabel

时间:2011-12-21 02:37:07

标签: iphone objective-c ios

我有一种方法可以从int healthInt中减去2。然后,我有一个名为NSString的{​​{1}},只显示healthString。所以我想在这个方法healthInt中做的是从take2Damage中减去2。将名为healthInt的{​​{1}}设置为UILabel时。问题是healthLabel位于另一个类中。这是一些代码。

Appdelegate.m

healthString

LevelOneViewController.m

healthLabel

1 个答案:

答案 0 :(得分:1)

你的设计很缺乏,但是你去了:

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

但我再次强调改变你的设计,不要在appDelegate中发生这种事情。考虑使用单例状态类型,这样做会更好,同时仍然保持简单。

编辑:

为了更清楚,这就是我了解你目前的情况。在AppDelegate课程中,您已将healthInthealthLabel定义为属性,并-(void)take2DamagehealthInt存储玩家的健康状况,healthLabel是该健康状况的用户友好字符串,take2DamagehealthInt中减去两次伤害。

您要从healthInthealthStringtake2Damage访问另一个类。我们称之为GameViewController。因此,无论您在GameViewController中使用哪种方法,都应使用上述代码。

请注意,#import AppDelegate.h .h文件中的必须 GameViewController

绝对没有理由不这样做。只要您在AppDelegate中定义了属性:

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

@synthesize'他们,你应该好。

祝你好运!