2012-07-30 2 views
0

간단한 IOS 응용 프로그램을 만드는 오전 카운트 다운 타이머 것입니다. 시뮬레이터에서 앱을 실행하면 카운트 다운 타이머가 카운트 다운되지 않습니다. 그것은 현재 시간 그대로입니다.Xcode 카운트 다운 타이머 카운트 다운하지 않습니다 (NSCalender)

enter image description here

또한 숫자 라인업을 만들기에 어떤 제안은 좋은 것입니다.

내 .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 

답변

0

세트는 타이머 YES를 반복합니다.

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

편집 : NSDateFormatter을 (를) 사용하여 문자열을 표시 할 수도 있습니다.

레이아웃을 향상 시키려면 NSDateFormatter를 여러 UILabels와 함께 사용하는 것이 좋습니다. 날짜 포맷터는 필요한 형식의 문자열을 만드는 데 사용할 수 있으며 각 레이블은 날짜/시간 문자열의 특정 부분을 보유 할 수 있습니다. Apple's Data Formatting Guide을 보시면 가장 절제된 부분은 사용할 수있는 모든 형식을 정의하는 Unicode Technical Standard #35에 대한 링크입니다.

날짜를 분할 한 후에는 원하는대로 레이아웃을 레이아웃하기 만하면됩니다.

+0

좋아요, 예로 설정하고 작동합니다 ..... 줄을 서기위한 제안은 무엇입니까? – Techboy3005

+0

답변을 업데이트했습니다. – Jessedc