4

NSDate を使用して時間を取得し、UILabel 内に表示する方法を知っています。

日付と時間と分を表示する必要があります。忙しく待たずに更新するにはどうすればよいですか?

ありがとう!

4

4 に答える 4

6

NSTimer を使用してラベルの時刻を更新する

- (void)viewDidLoad
 {
  [super viewDidLoad];

   [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateTime) userInfo:nil repeats:YES];
 }



-(void)updateTime
{


NSDate *date= [NSDate date];
NSDateFormatter *formatter1 = [[NSDateFormatter alloc]init]; //for hour and minute

formatter1.dateFormat = @"hh:mm a";// use any format 

clockLabel.text = [formatter1 stringFromDate:date];

[formatter1 release];


}
于 2013-03-17T10:23:21.900 に答える
2

あなたのコメントが言ったように、分が変わったときに必要な場合は、label.text

あなたはこのようにする必要があります:

1番目:現在の時刻を取得します:

NSDate *date = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dateComponents = [calendar components:NSHourCalendarUnit fromDate:date];

を設定しlabel.text = CURRENTHOUR_AND_YOURMINNUTSます。

次のように、次の分にラベルを更新します。

最初に、60 - nowSeconds [self performSelector:@selector(refreshLabel) withObject:nil afterDelay:(60 - dateComponents.minute)];の後に確認できます。

- (void)refreshLabel
{
    //refresh the label.text on the main thread
    dispatch_async(dispatch_get_main_queue(),^{      label.text = CURRENT_HOUR_AND_MINUTES;    });
    // check every 60s
    [self performSelector:@selector(refreshLabel) withObject:nil afterDelay:60];
}

毎分チェックするので、効果は上記の回答以上です。

refreshLabel呼び出されると、議事録が変更されたことを意味します

于 2013-03-17T10:52:04.443 に答える
1

NSTimer を使用して、現在の時刻を定期的に取得できます。

[NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];

- (void)timerFired:(NSTimer*)theTimer{
 //you can update the UILabel here.
}
于 2013-03-17T10:22:41.107 に答える