ios - 如何在 0 处停止倒计时? - swift

标签 ios swift timer countdown

我是 Swift 和 iOS 开发的新手。我正在尝试为特定日期倒计时。 我的 iOS 倒计时应用程序在零后计数为负。我想停在零。我该如何解决?

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()

}

最佳答案

尝试改变:

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

到:

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"
}

根据您的情况,您可能希望使用 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()
     }
}

关于ios - 如何在 0 处停止倒计时? - swift ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44479711/

相关文章:

ios - 向LSApplicationQueriesSchemes添加了方案,但是canOpenURL仍然失败

ios - 高度约束动画 'jumping'

iphone - 不允许应用访问 UDID

ios - Swift 中的 Facebook SDK

java - PipeGame - 为什么游戏对象不动?

javascript - 使用 service worker 的带有通知的计时器

javascript - 计时器运行时 Express.js 上出现 504 网关超时错误

php - NSArray 无法识别我放入其中的内容并给我错误

ios - 如何观察图像旋转?

ios - 为什么 AVPlayer 不播放任何内容?