Теперь у меня все работает так, как я хотел. Я использовал другой инициализатор NavigationLink
с аргументами tag
и 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))
...
}
}