4

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

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

1 回答 1

8

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

@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))
        ...
    }
}
于 2019-10-08T17:20:34.870 回答