我正在尝试做一个计算WPM的应用程序。在游戏结束时,我想使用计时器在60秒后停止应用程序。我想不出该怎么阻止它。我试着用条件语句来阻止它。但我不知道如何用SwiftUI实现它。如果任何人有任何其他想法,那将是很棒的。
import SwiftUI
struct ContentView: View {
@State var userInput = ""
@State var modalview = false
@State var getstarted = false
@EnvironmentObject var timerHolder : TimerHolder
var body: some View {
ZStack() {
modalView(modalview: $modalview, userInput: userInput)
}.sheet(isPresented: $modalview) {
modalView(modalview: self.$modalview)
}
}
}
struct modalView : View {
@ObservedObject var durationTimer = TimerHolder()
@Binding var modalview : Bool
@State var userInput: String = ""
var body: some View {
VStack{
Button(action: {
self.modalview = true
}) {
TextField("Get Started", text:$userInput)
.background(Color.gray)
.foregroundColor(.white)
// .frame(width: 300, height: 250).cornerRadius(20)
}
Text("\(userInput.count)")
if durationTimer == 60 {
.alert(isPresented: $showAlert) {
Alert(title: Text("Reminder"), message: Text("You wrote"), primaryButton: .default(Text("Yes"), action: { self.presentationMode.wrappedValue.dismiss() })
, secondaryButton: .cancel(Text("No")))
}; else {
}
}
}
}
class TimerHolder : ObservableObject {
var timer : Timer!
@Published var count = 0
func start() {
self.timer?.invalidate()
self.count = 0
self.timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) {
_ in
self.count += 1
print(self.count)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
}发布于 2020-01-25 11:54:56
我修改了一些代码给你一些线索。
struct ContentView: View {
@State var userInput = ""
@State var modalview = false
@State var getstarted = false
@EnvironmentObject var timerHolder : TimerHolder
var body: some View {
ZStack() {
modalView(modalview: $modalview, userInput: userInput)
}.sheet(isPresented: $modalview) {
modalView(modalview: self.$modalview)
}
}
}
struct modalView : View {
@ObservedObject var durationTimer = TimerHolder()
@Binding var modalview : Bool
@State var userInput: String = ""
var body: some View {
VStack{
Button(action: {
self.modalview = true
}) {
TextField("Get Started", text:$userInput)
.background(Color.gray)
.foregroundColor(.white)
// .frame(width: 300, height: 250).cornerRadius(20)
}
Text("\(userInput.count)").alert(isPresented: self.$durationTimer.count) {
Alert(title: Text("Reminder"),
message: Text("You wrote"),
primaryButton: .default(Text("Yes"), action: { self.presentationMode.wrappedValue.dismiss()
print(123)
})
,
secondaryButton: .cancel(Text("No")))
}
}
}
}
class TimerHolder : ObservableObject {
var timer : Timer!
@Published var count = false
init(){
self.start()
}
func start() {
self.timer?.invalidate()
self.count = false
self.timer = Timer.scheduledTimer(withTimeInterval: 60, repeats: true) {
_ in
self.count = true
print(self.count)
}
}
}https://stackoverflow.com/questions/59905167
复制相似问题