2012-04-18 69 views
1

大家好,谢谢你。我试图在视图重新前移到前景时通过代码更改ViewController上UILabel的文本属性。我在AppDelegate.m文件中使用“applicationDidBecomeActive”来调用ViewController.m上的方法,这是有效的。问题是,我调用的方法或“ViewDidLoad”方法都不会在设置应用程序更改设置后更新UIlabel.text。文本保持不变,就像它从上次更新发送字符串一样。我每次从设置包中获取一个NSUserDefault值以包含在文本字符串中。获取返回OK。 UILabel只是不会更新。只是FYI我在调用“viewDidLoad”的自我视图之前调用同步。为什么我的UILabel.text无法更新?

为了澄清,当“viewDidLoad”方法在首次启动时运行时,它工作正常。只有在点击主页按钮后,更改设置应用程序中的设置,然后返回到我的应用程序,UILabel lblResultTitle.text现在不会更新。 请请帮助...

这里是在viewDidLoad中的代码:

-(void) viewDidLoad 
{ 
    NSUserDefaults *settings = [NSUserDefaults standardDefaults]; 
    self.lblResultTitle.text = [NSString stringWithFormat:@"Speed %@ =", [settings stringForKey:kunit]] ; 

    [super viewDidLoad]; 
} 
+0

我的猜测是'self.lblResultTitle'是零或没有连接任何东西。先检查一下。另外,如果您想要经常更新标签(即不仅仅是在第一次加载时),请不要将该标签更新代码放在'viewDidLoad'中!把它放在别的地方(在一个新的函数中)并让'viewDidLoad'调用这个新函数。 – 2012-04-18 04:53:10

+0

感谢您的及时响应迈克尔。在屏幕上显示视图后,我可以从任何方法成功更新它。所以我相信这个连接是好的。 Xcode在IBOutlet上显示一个实心圆。我将尝试从下面的“ViewDidLoad”调用一个方法。 – 2012-04-18 04:58:52

+0

好的,我添加了一个新的方法,从“viewDidLoad”调用,并将代码移到新的方法。同样的结果,它第一次工作,但不会在随后的... – 2012-04-18 05:04:57

回答

0

答案是这样的:调用的方法从AppWillEnterForeground或APPxBecomeActive更新不会起作用,因为应用程序的故事板不执行然而。对于这种情况,应用程序必须监听从NSUserDefaults发送的消息。在为此执行必要的代码之后,我有我需要的解决方案。问题实际上不是UILabel。它比这更深刻。现在都很好!谢谢!

相关问题