我有一个从int“healthInt”中减去2的方法。然后我有一个名为“healthString”的NSString,它只显示“healthInt”。所以我想在这个方法“take2Damage”中做的是从“healthInt”中减去2。然后将一个名为“healthLabel”的UILabel设置为healthString。问题是healthLabel位于另一个类中。这是一些代码。
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;
由于最后一个人不知道我的意思,我想我会澄清。我想要我可以放在take2Damage中的代码来从另一个类访问UILabel。如果那是不可能的,那么我希望代码从另一个文件访问healthInt变量。希望这将有效。谢谢。
答案 0 :(得分:1)
首先,不要修改另一个类的IBOutlets。由于UIViewController
管理IBOutlet的方式,这非常容易出错。
接下来,您的基本问题是您没有遵循MVC模式(模型 - 视图 - 控制器)。像“健康”这样的东西应该存储在模型对象中,例如“Player”类。 AppDelegate不会受到伤害。玩家受到伤害。然后视图显示player.health
的当前值。
要了解MVC,请参阅Cocoa Core Competencies文档(请务必按照链接进行操作)。 MVC是Cocoa开发的核心。在走得太远之前一定要了解它。
也很有用:Organizing iOS project for MVC design pattern
一些很好的示例代码展示了精心设计的MVC应用:The Elements。
阅读上述内容后,您可能会有更多问题,但请先阅读Cocoa的基本架构。然后应该更清楚对象如何相互作用。