Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Timer swiftUI中的重复24小时计数器_Timer - Fatal编程技术网

Timer swiftUI中的重复24小时计数器

Timer swiftUI中的重复24小时计数器,timer,Timer,我试着教自己如何快速开发一款应用程序。我正试图建立一个重复的24小时计时器与符号“24:00:00”。每次计时器过期时,视图中都应该有一些更改,例如文本标签。下面是我已经构建的计时器的一些代码。我希望有人能帮我解决这个问题 struct timer: View { @State var nowDate: Date = Date() let referenceDate: Date = Date().addingTimeInterval(20) let calender = Calendar(ide

我试着教自己如何快速开发一款应用程序。我正试图建立一个重复的24小时计时器与符号“24:00:00”。每次计时器过期时,视图中都应该有一些更改,例如文本标签。下面是我已经构建的计时器的一些代码。我希望有人能帮我解决这个问题

struct timer: View {
@State var nowDate: Date = Date()
let referenceDate: Date = Date().addingTimeInterval(20)
let calender = Calendar(identifier: .gregorian)
let formatter = DateFormatter()
var timer: Timer {
    Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) {_ in
        self.nowDate = Date()

        }

var body: some View {

    Text(countDownString(from: referenceDate, until: nowDate)).font(.largeTitle).onAppear(perform: {
                    _ = self.timer
                })

    }
    func countDownString(from date: Date, until nowDate: Date) -> String
{
  let components = calender.dateComponents([.hour, .minute, .second], from: nowDate, to: date)



    return String(format: "%02dh:%02dm:%02ds",
                  components.hour ?? 00,
                  components.minute ?? 00,
                  components.second ?? 00)
}
试试这个:

import SwiftUI

struct ContentView: View {
    @State var nowDate: Date = Date()
    let referenceDate: Date = Date().addingTimeInterval(20)
    let calender = Calendar(identifier: .gregorian)
    let formatter = DateFormatter()


    var timer: Timer {
        Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) {_ in
            self.nowDate = Date()

        }


    }
    func countDownString(from date: Date, until nowDate: Date) -> String
    {
        let components = calender.dateComponents([.hour, .minute, .second], from: nowDate, to: date)

        return String(format: "%02dh:%02dm:%02ds",
                      components.hour ?? 00,
                      components.minute ?? 00,
                      components.second ?? 00)
    }
    var body: some View {
        Text(countDownString(from: referenceDate, until: nowDate)).font(.largeTitle).onAppear(perform: {
            _ = self.timer
        })    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
试试这个:

import SwiftUI

struct ContentView: View {
    @State var nowDate: Date = Date()
    let referenceDate: Date = Date().addingTimeInterval(20)
    let calender = Calendar(identifier: .gregorian)
    let formatter = DateFormatter()


    var timer: Timer {
        Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) {_ in
            self.nowDate = Date()

        }


    }
    func countDownString(from date: Date, until nowDate: Date) -> String
    {
        let components = calender.dateComponents([.hour, .minute, .second], from: nowDate, to: date)

        return String(format: "%02dh:%02dm:%02ds",
                      components.hour ?? 00,
                      components.minute ?? 00,
                      components.second ?? 00)
    }
    var body: some View {
        Text(countDownString(from: referenceDate, until: nowDate)).font(.largeTitle).onAppear(perform: {
            _ = self.timer
        })    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

我希望有人能帮我解决这个问题。如果你能具体说明你的问题是什么(特别是:你期望得到什么以及你从当前代码中得到什么),那就更好了。现在我得到了一个倒计时计时器,它的形式是“24:00:00”。问题是,计时器在“00:00:00”后继续运行,并开始倒计时负数。我想要的是计时器在0停止,并在24小时重复。我的问题是时间是Data.type Date()。因此,我不知道如何用if语句解释,如果倒计时计时器==0,textlabel应该更改。我希望你能理解这个问题。我希望有人能帮我解决我的问题。如果你能具体说明你的问题是什么(特别是:你期望得到什么以及你从当前代码中得到什么),那就更好了。现在我得到了一个倒计时计时器,它的形式是“24:00:00”。问题是,计时器在“00:00:00”后继续运行,并开始倒计时负数。我想要的是计时器在0停止,并在24小时重复。我的问题是时间是Data.type Date()。因此,我不知道如何用if语句解释,如果倒计时计时器==0,textlabel应该更改。我希望您理解这个问题。不幸的是,我看不到此代码与我的代码之间的区别:/不幸的是,我看不到此代码与我的代码之间的区别:/