2012-04-18 11 views
1

こんにちは皆さん、ありがとうございます。ビューを使用してViewController上のUILabelのテキストプロパティを変更しようとしています。foregroundに戻る AppDelegate.mファイルで "applicationDidBecomeActive"を使用してViewController.mのメソッドを呼び出すと、これが動作します。問題は、私が呼び出すメソッドも "ViewDidLoad"メソッドも、設定アプリの設定変更後にUIlabel.textを更新しないということです。テキストは、最後の更新から文字列を送信しているかのように変わりません。テキスト文字列に含めるたびに、設定バンドルからNSUserDefault値を取得しています。フェッチはOKを返します。 UILabelはただ更新しません。ちょうど、私は "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'はnilであるか何かに接続していないと思います。最初に確認してください。また、ラベルを頻繁に更新したい場合(つまり、最初の読み込み時だけでなく)、ラベルを更新するコードを 'viewDidLoad'に入れないでください!別の場所(新しい関数内)に置き、 'viewDidLoad'がその新しい関数を呼び出すようにします。 –

+0

迅速な対応Michaelに感謝します。ビューが画面上に表示されたら、どのメソッドからでも正常に更新できます。だから私は接続が良いと信じています。 Xcodeは、IBOutletに黒丸を表示します。次にViewDidLoadからメソッドを呼び出そうとします。 –

+0

OK "viewDidLoad"から呼び出された新しいメソッドを追加し、コードをその新しいメソッドに移動しました。同じ結果ですが、それは最初に動作しますが、それ以降は実行されません。 –

答えて

0

答えはこれです:アプリのストーリーボードが実行されていないため、AppWillEnterForegroundまたはAPPxBecomeActiveから更新するメソッドを呼び出すと、動作しません。まだ。この場合、アプリはNSUserDefaultsから送信されたメッセージをリッスンする必要があります。これに必要なコードを実装した後、私は必要な解決策を得ました。問題は実際にはUILabelではありませんでした。それはそれよりずっと深かった。それは今すべて良いです!ありがとうございました!

関連する問題