2012-04-18 123 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。它比這更深刻。現在都很好!謝謝!

相關問題