2014-07-05 48 views
-1

我是新來的編碼,請原諒任何無知!NSDate調用方法

背景:

我有一個倒計時到以天,小時,分鐘和秒給定日期一個簡單的標籤的應用程序。 我這樣做是使用NSDateNSTimer S:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    //Countdown timer 
    destinationDate = [NSDate dateWithTimeIntervalSince1970:1413961418]; 
    timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateLabel) userInfo:nil repeats:YES]; 
} 

-(void)updateLabel { 
    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    int units = NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; 
    NSDateComponents *components = [calendar components:units fromDate:[NSDate date] toDate:destinationDate options:0]; 

    [countdownLabel setText:[NSString stringWithFormat:@"%ld%c : %ld%c : %ld%c : %ld%c", (long)[components day], 'd', (long)[components hour], 'h', (long)[components minute], 'm', (long)[components second], 's']]; 
} 

問題:

當倒計時標籤達到0(即當我們到達指定的日期)我怎樣才能得到一個方法來火,如隱藏一個東西?

+0

附註 - 你爲什麼用'%C'的'h','M '等在你的格式字符串?只需將字母放在格式字符串中就像冒號一樣。 – rmaddy

回答

0

最好的方法是查看當前日期是否晚於或等於destinationDate

if ([destinationDate timeIntervalSinceNow] <= 0) { 
    // The destination date is in the past - do something 
} 
+0

謝謝,這工作完美 –

0

也許我沒有得到你的問題,但你可以驗證標籤文本是否等於「0:0:0 h.s」之類的東西嗎?

我的意思是,你已經有了updateLabel方法。

+0

是的,標籤等於指定日期的計數,所以它表示類似於180天10小時30分鐘2秒,然後每秒鐘倒計時。 –

0

如果你想條件檢查,如果倒數計時器達到零,則嘗試以下條件: -

 if ([destinationDate compare:[NSDate 
    date]]==NSOrderedSame) 

    //hiding your object 
    } 
+0

這將無法正常工作。日期以毫秒爲單位存儲。兩者完全相等的機率基本爲零。 – rmaddy