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

Rob*_*b N 3 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)
Run Code Online (Sandbox Code Playgroud)

Rob*_*b N 6

我现在按照我想要的方式工作。我使用了不同的NavigationLink初始化程序,带有tagselection参数。它似乎运行良好,但我不知道这是否是该初始化程序的预期用途,因为文档非常稀疏。

@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))
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)