在 Swift 5.5 / SwiftUI 中尝试使用更改按钮标签退出循环
Trying to use change of button label to exit loop in Swift 5.5 / SwiftUI
这是我一直在尝试使按钮像切换按钮一样运行并在切换到“运行”时循环 运行 并在按钮退出循环时的按钮代码returns 到“开始”...
@State private var buttonLabel = "开始"
Button(buttonLabel) {
if buttonLabel == "Running" {
buttonLabel = "Start"
} else {
buttonLabel = "Running"
}
while buttonLabel == "Running" {
print("running")
}
}
我什至尝试在 while 语句的代码部分的 print 语句下添加...
if buttonLabel != "Running {
break
}
当这个 运行s 没有 while 语句时...按钮将开始显示“开始”,按下时变为“运行”,再次按下时 returns 到“开始”。但是,当添加 while 循环代码时,程序为 运行...当您点击“开始”时,文本变暗并且不显示“运行”并且无法按按钮将其转回“开始”或退出循环。
那是因为您让 SwfiftUI 主线程忙于 while
。如果您想在 while
.
中做一些事情,您可以 运行 平行 task
struct ButtonProblem: View {
@State var buttonLabel = "Start"
var body: some View {
Button(buttonLabel) {
if buttonLabel == "Running" {
buttonLabel = "Start"
} else {
buttonLabel = "Running"
}
Task.detached {
while buttonLabel == "Running" {
print("running")
}
}
}
}
}
这是我一直在尝试使按钮像切换按钮一样运行并在切换到“运行”时循环 运行 并在按钮退出循环时的按钮代码returns 到“开始”...
@State private var buttonLabel = "开始"
Button(buttonLabel) {
if buttonLabel == "Running" {
buttonLabel = "Start"
} else {
buttonLabel = "Running"
}
while buttonLabel == "Running" {
print("running")
}
}
我什至尝试在 while 语句的代码部分的 print 语句下添加...
if buttonLabel != "Running {
break
}
当这个 运行s 没有 while 语句时...按钮将开始显示“开始”,按下时变为“运行”,再次按下时 returns 到“开始”。但是,当添加 while 循环代码时,程序为 运行...当您点击“开始”时,文本变暗并且不显示“运行”并且无法按按钮将其转回“开始”或退出循环。
那是因为您让 SwfiftUI 主线程忙于 while
。如果您想在 while
.
task
struct ButtonProblem: View {
@State var buttonLabel = "Start"
var body: some View {
Button(buttonLabel) {
if buttonLabel == "Running" {
buttonLabel = "Start"
} else {
buttonLabel = "Running"
}
Task.detached {
while buttonLabel == "Running" {
print("running")
}
}
}
}
}