私は非常に単純なことをしようとしています: バックグラウンドから来た後にアプリケーションがアクティブになったときに、(唯一の) ビューコントローラーでいくつかのラベルを更新します (簡単にするために現在の時刻で言います (私の場合は、通話状態などのテレフォニー パラメータを更新していますが、それは問題ではありません))。
正直なところ、 を呼び出すとviewDidLoad
、このメソッドのコードが再び実行されるため、すべてのラベルが最新の状態になると確信していました。しかし、アプリを強制終了して再起動しない限り、それは起こりません。そのため、 の下のアプリ デリゲートで行ったことでapplicationDidBecomeActive
、ビュー コントローラー メソッドを呼び出しました。
ViewController *vc = [[ViewController alloc] init];
[vc refreshCalls];
このコードは実行されますが、ラベルには何も起こりません。UIAlertView
これを行うと、DOES には更新された情報があることも示されていますが、ラベルはありません。
どうすればこれを修正できますか? どんなアイデアでも大歓迎です。
これが私のアプリデリゲートapplicationDidBecomeActiveメソッドです:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
ViewController *vc = [[ViewController alloc] init];
[vc refreshCalls];
}
そしてrefreshCalls
View Controllerのメソッド:
-(void) refreshCalls {
NSDate *today = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
// display in 12HR/24HR (i.e. 11:25PM or 23:25) format according to User Settings
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
NSString *currentTime = [dateFormatter stringFromDate:today];
NSLog(@"User's current time in their preference format:%@",currentTime);
UIAlertView *alert1 = [[UIAlertView alloc] initWithTitle:@"TIME" message:currentTime delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil , nil];
[alert1 show]; --> does show an update time
myLabel.text = currentTime;
[self.view addSubview:myLabel]; --> nothing happens, stays the last time
}