Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SwiftUI列表选择未选择_Swift_Swiftui_Swiftui List - Fatal编程技术网

SwiftUI列表选择未选择

SwiftUI列表选择未选择,swift,swiftui,swiftui-list,Swift,Swiftui,Swiftui List,我正在尝试使用列表选择,以便用户从列表中选择零天或更多天。我已尝试使用中列出的解决方案,但无效 下面给出了我的代码,我已验证编辑模式是否处于活动状态。我应该期待像上面的答案中那样的行为 代码: 该表应显示与另一个答案相同的选择行为,但当前它仅显示为编辑模式下的正常列表。表单确实会阻止编辑模式传播(或正常工作)。唯一的办法是不要将它嵌入表单中,希望它在发布前得到修复(目前是XcodeBeta5,reporting…) 导入快捷界面 结构选择视图:视图{ @绑定变量jobDetails:jobDet

我正在尝试使用列表选择,以便用户从列表中选择零天或更多天。我已尝试使用中列出的解决方案,但无效

下面给出了我的代码,我已验证编辑模式是否处于活动状态。我应该期待像上面的答案中那样的行为

代码:

该表应显示与另一个答案相同的选择行为,但当前它仅显示为编辑模式下的正常列表。

表单确实会阻止编辑模式传播(或正常工作)。唯一的办法是不要将它嵌入表单中,希望它在发布前得到修复(目前是XcodeBeta5,reporting…)

导入快捷界面
结构选择视图:视图{
@绑定变量jobDetails:jobDetails
var weekdays:[String]=[“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”]
var body:一些观点{
VStack{
列表(self.weekdays,id:\.self,selection:$jobDetails.weekdays){day in
文本(天)
}
}
}
}
结构作业详细信息:可识别{
设id=UUID()
var weekdays=Set()
}
结构作业详细信息视图:视图{
让jobDetails:jobDetails
var body:一些观点{
HStack{
文本(“工作日:”)
文本(jobDetails.weekdays.joined(分隔符:“,”))
}
}
}
结构JobDetailHost:视图{
@环境(\.editMode)变量模式
@绑定变量jobDetails:jobDetails
变量isEditing:Bool{
返回模式?.value==.inactive
}
var body:一些观点{
VStack{
//HStack{Spacer();EditButton().padding()}
ZStack{
如果我正在编辑{
jobDetails视图(jobDetails:jobDetails)
}否则{
SelectionView(作业详细信息:$jobDetails)
}
}
}.navigationBarItems(尾部:EditButton())
}
}
结构作业视图:视图{
@状态变量jobDetails:[jobDetails]=[
作业详细信息(),
作业详细信息(),
作业详细信息(),
作业详细信息(),
]
var body:一些观点{
导航视图{
列表中的($jobDetails){(jobDetail:Binding)
导航链接(jobDetail.id.uuidString,目标:JobDetailHost(jobDetails:jobDetail))
}
}
}
}
结构列表选择2视图:视图{
var body:一些观点{
JobsView()
}
}
表单确实停止了EditMode的传播(或者无论如何都不能正常工作)。唯一的办法是不要将它嵌入表单中,希望它在发布前得到修复(目前是XcodeBeta5,reporting…)

导入快捷界面
结构选择视图:视图{
@绑定变量jobDetails:jobDetails
var weekdays:[String]=[“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”]
var body:一些观点{
VStack{
列表(self.weekdays,id:\.self,selection:$jobDetails.weekdays){day in
文本(天)
}
}
}
}
结构作业详细信息:可识别{
设id=UUID()
var weekdays=Set()
}
结构作业详细信息视图:视图{
让jobDetails:jobDetails
var body:一些观点{
HStack{
文本(“工作日:”)
文本(jobDetails.weekdays.joined(分隔符:“,”))
}
}
}
结构JobDetailHost:视图{
@环境(\.editMode)变量模式
@绑定变量jobDetails:jobDetails
变量isEditing:Bool{
返回模式?.value==.inactive
}
var body:一些观点{
VStack{
//HStack{Spacer();EditButton().padding()}
ZStack{
如果我正在编辑{
jobDetails视图(jobDetails:jobDetails)
}否则{
SelectionView(作业详细信息:$jobDetails)
}
}
}.navigationBarItems(尾部:EditButton())
}
}
结构作业视图:视图{
@状态变量jobDetails:[jobDetails]=[
作业详细信息(),
作业详细信息(),
作业详细信息(),
作业详细信息(),
]
var body:一些观点{
导航视图{
列表中的($jobDetails){(jobDetail:Binding)
导航链接(jobDetail.id.uuidString,目标:JobDetailHost(jobDetails:jobDetail))
}
}
}
}
结构列表选择2视图:视图{
var body:一些观点{
JobsView()
}
}

我为此挣扎了一段时间,答案不是@Fabian所想的

您需要使用
.onDelete()
,否则选择气泡将不会出现:

表单{
章节(标题:文本(“加班天数”)){
列表(self.weekdays,id:\.self,selection:$selectKeeper){day in
文本(天)
}
.onDelete(执行:noOp)
}
}
.navigationBarTitle(文本(“我的标题”))

我为此挣扎了一段时间,答案不是@Fabian所想的

您需要使用
.onDelete()
,否则选择气泡将不会出现:

表单{
章节(标题:文本(“加班天数”)){
列表(self.weekdays,id:\.self,selection:$selectKeeper){day in
文本(天)
}
.onDelete(执行:noOp)
}
}
.navigationBarTitle(文本(“我的标题”))

我自己链接到这个问题的可能重复,这并不能解决我的问题,因为当前的顶级答案是在这个代码中实现的,但没有预期的行为。很好,我没有意识到。我自己链接到这个问题的可能重复,这并不能解决我的问题,因为当前的顶级答案是在这段代码中实现的,但没有预期的行为。好的一点,我没有意识到。
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)
                })

        }
}
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)


    }
}
import SwiftUI

struct SelectionView: View {
    @Binding var jobDetails: JobDetails

    var weekdays: [String] = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]

    var body: some View {
        VStack{
            List(self.weekdays, id: \.self, selection: $jobDetails.weekdays) { day in
                Text(day)
            }
        }
    }
}

struct JobDetails: Identifiable {
    let id = UUID()
    var weekdays = Set<String>()
}

struct JobDetailsView: View {
    let jobDetails: JobDetails

    var body: some View {
        HStack{
            Text("Weekdays:")
            Text(jobDetails.weekdays.joined(separator: ", "))
        }
    }
}

struct JobDetailHost: View {

    @Environment(\.editMode) var mode
    @Binding var jobDetails: JobDetails

    var isEditing: Bool {
        return mode?.value == .inactive
    }

    var body: some View {

        VStack {
            //HStack{ Spacer(); EditButton().padding() }
            ZStack{
                if isEditing {
                    JobDetailsView(jobDetails: jobDetails)
                } else {
                    SelectionView(jobDetails: $jobDetails)
                }
            }
        }.navigationBarItems(trailing: EditButton())
    }
}

struct JobsView: View {
    @State var jobDetails: [JobDetails] = [
        JobDetails(),
        JobDetails(),
        JobDetails(),
        JobDetails(),
    ]

    var body: some View {
        NavigationView{
            List($jobDetails) { (jobDetail: Binding<JobDetails>) in
                NavigationLink(jobDetail.id.uuidString, destination: JobDetailHost(jobDetails: jobDetail))
            }
        }
    }
}


struct ListSelection2View: View {
    var body: some View {
        JobsView()
    }
}