简体   繁体   English

如何在0处停止倒数? -迅捷

[英]How to stop countdown at 0? - Swift

I'm new at Swift and iOS development. 我是Swift和iOS开发的新手。 I'm trying countdown for specific date. 我正在尝试特定日期的倒计时。 My iOS countdown app is counts negative after zero. 我的iOS倒数计时应用程式在零后为负数。 I want stop at zero. 我想从零开始。 How do I fix this? 我该如何解决?

let currentDate = Date()
let dateFormatter = DateFormatter()

let userCalendar = Calendar.current

 let requestedComponent: Set<Calendar.Component> = [.day,.hour,.minute,.second]


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(printTime), userInfo: nil, repeats: true)
    timer.fire()



}

func printTime()
{
    dateFormatter.dateFormat = "dd/MM/yy hh:mm:ss"
    let startTime = Date()
     let endTime = dateFormatter.date(from: "11/03/18 10:00:00")

    let time = userCalendar.dateComponents(requestedComponent, from: startTime, to: endTime!)


    dayLabel.text = "\(time.day!)"
    hourLabel.text = "\(time.hour!)"
    minuteLabel.text = "\(time.minute!)"
    secondLabel.text = "\(time.second!)"
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()

} }

Try changing: 尝试更改:

dayLabel.text = "\(time.day!)"
hourLabel.text = "\(time.hour!)"
minuteLabel.text = "\(time.minute!)"
secondLabel.text = "\(time.second!)"

to: 至:

if startTime < endTime {
    dayLabel.text = "\(time.day!)"
    hourLabel.text = "\(time.hour!)"
    minuteLabel.text = "\(time.minute!)"
    secondLabel.text = "\(time.second!)"
} else {
    dayLabel.text = "0"
    hourLabel.text = "0"
    minuteLabel.text = "0"
    secondLabel.text = "0"
}

And depending on your situation, you might want to stop the timer with timer.invalidate() like so: 根据您的情况,您可能希望使用timer.invalidate()停止计时器, timer.invalidate()所示:

...

var timer: Timer?

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(printTime), userInfo: nil, repeats: true)
    timer?.fire()

}

func printTime() {

     ...

     } else {
         ...
         timer?.invalidate()
     }
}
let currentDate = Date()
let dateFormatter = DateFormatter()
var timer = Timer()
let userCalendar = Calendar.current

let requestedComponent: Set<Calendar.Component> = [.day,.hour,.minute,.second]


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(printTime), userInfo: nil, repeats: true)
    timer.fire()



}

func printTime()
{
    dateFormatter.dateFormat = "dd/MM/yy hh:mm:ss"
    let startTime = Date()
     let endTime = dateFormatter.date(from: "11/03/18 10:00:00")

    let time = userCalendar.dateComponents(requestedComponent, from: startTime, to: endTime!)

    if time.day! == 0 && time.hour! == 0 && time.minute! == 0 && time.second! == 0 {timer.invalidate()}

    dayLabel.text = "\(time.day!)"
    hourLabel.text = "\(time.hour!)"
    minuteLabel.text = "\(time.minute!)"
    secondLabel.text = "\(time.second!)"
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM