gpt4 book ai didi

ios - 按下后 SwiftUI Toggle 将被禁用

转载 作者:行者123 更新时间:2023-11-29 05:29:55 24 4
gpt4 key购买 nike

我正在努力从用户输入表单中控制表单 UI 部分的切换按钮获得正确的行为。在下面的代码中,切换按钮根据选择的 jobDetails 元素正确显示。但是,切换切换按钮会导致切换按钮在 session 的其余时间内变为不活动/禁用。 IE。切换按钮只能工作一次。显然,期望的行为是用户应该能够随意切换。

这是代码中未按预期工作的部分。

struct AddShift_View: View {

@State var index = 0
@State var jobDetails: [JobDetails] = DataManager().fetchJobList()

var body: some View {

NavigationView {
Form {

Section(header: Text("Breaks")) {
Toggle(isOn: $jobDetails[index].hasAutomaticBreaks) {
Text("Automatic Breaks")
}
}

} .navigationBarTitle(Text("Add Shift"))
}
}
}

这是 JobDetails 结构的相关部分。

struct JobDetails: Codable, Identifiable, Equatable {

// More properties here.

var hasAutomaticBreaks: Bool

}

最佳答案

我已经尝试过您的代码,一切正常。切换按钮按预期工作。不要忘记在您的 JobDetails 中添加一个 id。就像是“var id = UUID()”

也许您的问题与可能的异步函数有关DataManager().fetchJobList()

这是我与异步函数一起使用的测试代码。

    import SwiftUI

struct JobDetails: Codable, Identifiable, Equatable {
var id = UUID()
var hasAutomaticBreaks: Bool
}

struct ContentView: View {
@State var index = 0
@State var jobDetails: [JobDetails] = []

var body: some View {
NavigationView {
Form {
Section(header: Text("Breaks")) {
if jobDetails.count > 0 {
Toggle(isOn: $jobDetails[index].hasAutomaticBreaks)
{
Text("Automatic Breaks")
}
}
}
}.navigationBarTitle(Text("Add Shift"))
}.onAppear(perform: fetchData)
}

func fetchData() {
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
self.jobDetails = [JobDetails(hasAutomaticBreaks: false)]
}
}
}

关于ios - 按下后 SwiftUI Toggle 将被禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57716723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com