我一直在努力实现我头痛的两个主要目标。抱歉,如果这是一个简单的修复程序,那么我对swift/swiftui还是有点陌生
一定时间后
@State
以根据耗时来更改值。 我搜索了堆栈溢出,并找到了建议使用计时器的答案:
struct CurrentDateView : View {
@State var now = Date()
let timer = Timer.publish(every: 1, on: .current, in: .common).autoconnect()
var body: some View {
Text("\(now)")
.onReceive(timer) {
self.now = Date()
}
}
}
但是我将如何合并它,以便可以使用诸如
@State
之类的东西,在经过7.5秒后将我的值更改为false
:@State randomTF : Bool = true
或在经过7.5秒后将
Text("Please Enter Above")
更改为Text("Sorry Too Late")
最佳答案
您可以像这样使用DispatchQueue
延迟某些时间:
struct ContentView: View {
@State private var hasTimeElapsed = false
var body: some View {
Text(hasTimeElapsed ? "Sorry, too late." : "Please enter above.")
.onAppear(perform: delayText) // Triggered when the view first appears. You could
// also hook the delay up to a Button, for example.
}
private func delayText() {
// Delay of 7.5 seconds
DispatchQueue.main.asyncAfter(deadline: .now() + 7.5) {
hasTimeElapsed = true
}
}
}
时间过去后,它将@State
属性hasTimeElapsed
设置为true
,然后更新 View 主体。