2011-12-27 74 views
0

在我的代表我有一个NSInteger healthInt;和NSMutableString * healthString。在appDelegate.m中,我设置了healthString来保存healthInt的改变值。然后在另一个视图中我有UILabel * healthLabel。我已经设置了healthLabel以下面的代码显示healthString。更新UILabel与全球NSString

healthLabel.text = [NSString stringWithFormat:@"%@", appDelegate.healthString]; 

这个工程并显示数字100,这是我已经设置healthInt在appDelegate。但是,当一个UIImageView mainSprite与另一个ImageView healthInt碰撞时,应该减少两个。它能做什么,我可以说,因为我可以看到它发生在日志中。日志可能会更改并显示慢速减少的healthInt的值,但healthLabel不会随着healthInt的降低而更新。我的问题是我如何得到这个healthLabel更新为healthInt减少?我试图在mainSprite和其他ImageView之间的碰撞检测代码中引起损坏,但似乎不起作用。谢谢!

回答

2

如果你想让你的UILabel每次更新healthInthealthString更改,有几种方法可以做到这一点。

一种方法是进入设置方法healthInt(或创建一个而不是使用@synthesize),并且每次您的healthInt编号更改时广播NSNotification。然后,当带有该标签的视图可见时,请注册的观察员拿起该通知并对标签进行更改。

另一种方法是使用键值编码&将UILabel的文本字段绑定到healthStringHere is a related question that may help you use this possible solution

+0

你能推荐一个教程来演示你建议的第一种方法吗? – 2011-12-27 01:08:02

+0

查看[关于通过NSNotificationCenter发送和接收消息的问题](http://stackoverflow.com/questions/2191594/how-to-send-and-receive-message-through-nsnotificationcenter-in-objective-c )... – 2011-12-27 01:12:29

+0

是的,我看着它,我真的不明白。我如何使用这种方法来更新UILabel。我应该把它放在appDelegate中,还是应该在其他类中做? – 2011-12-27 01:27:59