1

みなさん、こんにちは。よろしくお願いします。ビューがフォアグラウンドに戻ったときに、コードを介してViewControllerのUILabelのテキストプロパティを変更しようとしています。AppDelegate.mファイルの「applicationDidBecomeActive」を使用してViewController.mのメソッドを呼び出していますが、これは機能します。問題は、設定アプリで設定を変更した後、呼び出したメソッドも「ViewDidLoad」メソッドもUIlabel.textを更新しないことです。テキストは、最後の更新からの文字列を送信しているかのように、ほとんど変更されません。テキスト文字列に含めるたびに、設定バンドルからNSUserDefault値を取得しています。フェッチはOKを返します。UILabelは更新されません。参考までに、「viewDidLoad」をトリガーするセルフビューの前に同期を呼び出しています。

明確にするために、「viewDidLoad」メソッドが起動時に初めて実行されるときは、正常に機能します。UILabel lblResultTitle.textが更新されないのは、ホームボタンを押し、設定アプリで設定を変更してからアプリに戻った後でのみです。助けてください...

ViewDidLoadのコードは次のとおりです。

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

  [super viewDidLoad];
}
4

1 に答える 1

0

答えは次のとおりです。アプリのストーリーボードがまだ実行されていないため、AppWillEnterForeground または APPxBecomeActive から更新するメソッドを呼び出しても機能しません。この場合、アプリは NSUserDefaults から送信されたメッセージをリッスンする必要があります。これに必要なコードを実装すると、必要なソリューションが得られます。問題は実際には UILabel ではありませんでした。それよりもはるかに深かった。もう大丈夫です!ありがとうございました!

于 2012-04-19T04:40:09.170 に答える