如何使SwiftUI NavigationLink在编辑模式下工作?

时间:2019-10-04 12:00:35

标签: swiftui navigationlink

我有一个物品清单。单击一个应将新视图推送到导航堆栈。我注意到如果列表处于编辑模式,NavigationLink不起作用。有办法控制吗?我需要它在编辑模式下工作。

List {
    ForEach(segments) { segment in
        NavigationLink(destination: EditSegmentView(segment: segment)) {
            Text(segment.title)
        }
    }.onDelete(perform: onDelete)
     .onMove(perform: onMove)
}.environment(\.editMode, $alwaysTrue)

1 个答案:

答案 0 :(得分:0)

我现在可以按照自己的方式进行此操作。我使用了另外一个NavigationLinktag自变量的selection初始化程序。看来效果很好,但是我不知道这是否是该初始化程序的预期用途,因为文档非常稀疏。

@State var segmentSelection: Segment.ID? = nil

var body: some View {
    NavigationView {
        ...
        List {
            ForEach(workout.segments) { segment in
                NavigationLink(destination: EditSegmentView(segment: segment),    
                               tag: segment.id,
                               selection: self.$segmentSelection) {
                                Text(segment.title)
                }
                .onTapGesture(perform: { self.segmentSelection = segment.id })
            }.onDelete(perform: onDelete)
             .onMove(perform: onMove)
        }.environment(\.editMode, Binding.constant(.active))
        ...
    }
}