gpt4 book ai didi

ios - SwiftUI Picker 选择绑定(bind)不更新

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

我正在尝试拥有一个所有类型的选择器列表,称为 Course 然后让用户在向托管对象添加新的 Assignment 时选择适当的类(class)语境。当用户点击选择器 View 中的一行时,选择器选择绑定(bind) (courseIndex) 不会更新。我不完全确定如何解决这个问题,也不知道是什么原因造成的。感谢您的帮助!

这是受影响的代码:

struct NewAssignmentView: View {

@Environment(\.presentationMode) var presentationMode
@Environment(\.managedObjectContext) var context
@FetchRequest(entity: Course.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \Course.name, ascending: true)]) var courses: FetchedResults<Course>

@State var name = ""
@State var hasDueDate = false
@State var dueDate = Date()
@State var courseIndex = 0


var body: some View {
NavigationView {
Form {
TextField("Assignment Name", text: $name)
Section {
Picker(selection: $courseIndex, label:
HStack {
Text("Course: ")
Spacer()
Text(self.courses[self.courseIndex].name ?? "").foregroundColor(self.courses[self.courseIndex].color).bold()
})
{
ForEach(self.courses, id: \.self) { course in
Text("\(course.name ?? "")").foregroundColor(course.color).tag(course)
}
}
}
Section {
Toggle(isOn: $hasDueDate.animation()) {
Text("Due Date")
}
if hasDueDate {
DatePicker(selection: $dueDate, displayedComponents: .date, label: { Text("Set Date:") })
}
}
}
[...]

最佳答案

当使用可选的绑定(bind)值时,重要的是你明确地为标签值提供可选的包装,因为 Swift 不会自动为你打开它并且无法将非可选值等同于可选值。

@Binding var optional: String?

Picker("Field", selection: $optional) {
// None option.
Text("None").tag(String?.none)
// Other fields.
ForEach(options) { option in
Text(option).tag(String?.some(option))
}
}

关于ios - SwiftUI Picker 选择绑定(bind)不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59277070/

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