2016-07-31 1 views
0

내 응용 프로그램에서 카운트 다운 타이머를 개발하고 있지만 작동하지 않는 이유를 모르겠습니다.Countdown timer swift

let startTime = NSDate() 

하고 완벽 작동

let startTime = formatter.dateFromString("05/12/16 0:00:00 a") 

을 언급하지만,이 순간에 현재 시간과 날짜부터 시작합니다

let formatter = NSDateFormatter() 
let userCalendar = NSCalendar.currentCalendar() 
let requestedComponent: NSCalendarUnit = [ 
//NSCalendarUnit.Month, 
//NSCalendarUnit.Day, 
NSCalendarUnit.Hour, 
NSCalendarUnit.Minute, 
NSCalendarUnit.Second 

] 

    func printTime() 
{ 
    formatter.dateFormat = "MM/dd/yy hh:mm:ss a" 
    //let startTime = NSDate() 
    let startTime = formatter.dateFromString("05/12/16 0:00:00 a") 
    let endTime = formatter.dateFromString("12/25/16 8:00:00 a") 
    let timeDifference = userCalendar.components(requestedComponent, fromDate: startTime!, toDate: endTime!, options: []) 
    TimeLabel.text = " \(timeDifference.hour)Hours \(timeDifference.minute)Minutes \(timeDifference.second) Seconds" 
} 


    let timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: #selector(printTime), userInfo: nil, repeats: true) 
    timer.fire() 

내가 떠날 경우. 구체적인 날짜와 시간이 필요합니다. 제 경우에는 "05/12/16 0:00:00 a"이고 시간은 지금부터가 아니라 그 날짜와 시간부터 카운트 다운됩니다.

+0

'dateFromString'을 사용하여 날짜를 구성하지 마십시오. 날짜 구성 요소를 사용하십시오. – matt

답변

1

항상 같은 두 날짜를 비교하기 때문에 아무런 변화가 없습니다. startTimeendTime입니다. 이 두 날짜의 차이는 항상 정확히 동일합니다. 점차적 인 카운트 다운이 필요하다면 그에 따라 하나 또는 다른 것을 변경해야합니다. NSDate() 버전이 작동하는 이유는 startTime이 현재 날짜가 무엇이든간에 변경되기 때문입니다.

+0

고맙습니다. 나는 그것을 지금 아주 잘 이해했다. 필자의 경우 8 시간 (08:00:00) 동안 버튼을 비활성화하고 싶습니다.이 시간이 끝나면 버튼을 다시 활성화하고 싶습니다. 어떻게 할 수 있습니까? –

+0

버튼을 NSDate 어딘가에 다시 활성화해야하는 시간을 저장하고, 그 시간의'timeIntervalSinceNow()'가 0보다 큰지 정기적으로 확인하십시오. 그렇지 않은 경우, 버튼을 다시 사용할 수 있습니다. – Arclite