我正在尝试为用户使用列表选择,以使列表中的天数不超过零天。我尝试使用this question中列出的解决方案,但无济于事。
下面给出了我的代码,并且我确认编辑模式处于活动状态。我应该期望像上面链接的答案那样的行为。
代码:
struct EditView: View {
@State var selectKeeper = Set<String>()
var weekdays: [String] = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
@Environment(\.editMode) var mode
var body: some View {
Form {
Section(header: Text("Overtime Days")) {
List(self.weekdays, id: \.self, selection: $selectKeeper) { day in
Text(day)
}
}
} .navigationBarTitle(Text("My Title"))
.padding(.top)
.onAppear(perform: {
print(self.mode?.value as Any)
})
}
}
EditButton包含在父视图中,并在以下代码中启用。
struct JobDetailHost: View {
@Environment(\.editMode) var mode
@Binding var jobDetails: JobDetails
var body: some View {
VStack {
if self.mode?.value == .inactive {
JobDetailView(jobDetails: jobDetails)
} else {
EditView(jobDetails: $jobDetails)
.onDisappear(perform: {
//DO STUFF...
})
}
}
.navigationBarItems(trailing: EditButton())
.onAppear(perform: bindDraft)
}
}
该表应显示选择行为,如在其他答案中一样,但当前它在编辑模式下仅显示为普通列表。
答案 0 :(得分:2)
Form 确实阻止了 EditMode 传播(或仍然正常工作)。唯一的方法是不要将其嵌入 Form 中,并希望它在发布之前得到修复(当前为XcodeBeta5,正在报告。)。
def expanding(l):
for i in range(0,len(l)-3):
if (abs(l[i+2]-l[i+1])<=abs(l[i+1]-l[i])):
return False
return True
答案 1 :(得分:0)
我为此挣扎了一段时间,答案不是@Fabian的想法。
您需要使用.onDelete()
,否则选择气泡将不会出现:
Form {
Section(header: Text("Overtime Days")) {
List(self.weekdays, id: \.self, selection: $selectKeeper) { day in
Text(day)
}
.onDelete(perform: noOp)
}
}
.navigationBarTitle(Text("My Title"))