我的app委托中有一个名为healthInt的NSInteger。在app委托中,我将healthInt设置为100.当应用程序加载第一个视图时,healthInt仍然等于100.但是当它加载下一个视图时,healthInt设置为0.即使该视图控制器中有一个标签(标题为healthLabel)显示100.这是一个问题的原因是因为我想做的是
-(void)viewDidLoad{
if(appDelegate.healthInt <= 0){
healthLabel.text = @"Dead";
}
}
但这似乎不起作用。我知道这是糟糕的架构,但重做整个项目对我来说有点太晚了。如果您需要查看其他代码,我将很乐意向您展示:)
答案 0 :(得分:1)
我同意这个评论。确保appDelegate属性不为null。如果是,你可以使用
id<UIApplicationDelegate> appDelegate = [UIApplication sharedApplication].delegate
再次获得它。
[编辑] 您必须将appDelegate强制转换为您的类类型才能从代理中获取“healthInt”。
MyAppDelegate *myApp = (MyAppDelegate *)[UIApplication sharedApplication].delegate
[第二编辑] DUH!我没有在viewDidLoad中看到您的示例代码。热门舔是对的。您需要在视图控制器中设置委托才能调用它。
试试这个:
-(void)viewDidLoad{
appDelegate = [[UIApplication sharedApplication] delegate];
if(appDelegate.healthInt <= 0){
healthLabel.text = @"Dead";
}
}
希望这有帮助。
罗布