0

カウントダウン タイマーを使用する単純な IOS アプリケーションを作成しています。シミュレーターでアプリを実行すると、カウントダウン タイマーがカウントダウンしません。単に現在の時刻のままです。

ここに画像の説明を入力

また、数字を並べるための提案もあればいいでしょう。

私の .h ファイル

//  ViewController.h
//  ******    
//
//  Created by ***** on 7/29/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController {

    NSDate *destinationDate;

    IBOutlet UILabel *datelabel;

    NSTimer *timer;

}




@end

私の .m ファイル

//
//  ViewController.m
//  ******
//
//  Created by ******* on 7/29/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//

#import "ViewController.h"

@implementation ViewController

-(void) updateLabel {

    NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    int units = NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
    NSDateComponents *components = [calender components:units fromDate:[NSDate date] toDate:destinationDate options:0];
    [datelabel setText:[NSString stringWithFormat:@"%d%c %d%c %d%c %d%c", [components day], ' ', [components hour], ' ', [components minute], ' ', [components second], ' ']];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];

    destinationDate = [[NSDate dateWithTimeIntervalSince1970:1343609103] retain];
    timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateLabel) userInfo:nil repeats:NO];

    // Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}

@end
4

1 に答える 1

0

繰り返しYESをタイマーに設定します。

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

編集: NSDateFormatterを使用して文字列を表示することも検討してください。

レイアウトを改善したい場合は、複数の UILabels と組み合わせて NSDateFormatter を使用することをお勧めします。日付フォーマッタを使用して必要な形式の文字列を作成し、各ラベルに日付/時刻文字列の特定の部分を保持できます。Apple の Data Formatting Guideを見てください。最も控えめな部分は、使用できるすべての形式を定義するUnicode Technical Standard #35へのリンクです。

日付を分割したら、好きなようにビューをレイアウトするだけです。

于 2012-07-30T01:40:01.447 に答える