Как заставить SwiftUI NavigationLink работать в режиме редактирования? - PullRequest
0 голосов
/ 04 октября 2019

У меня есть список предметов. Нажатие на него должно выдвинуть новый вид в стек навигации. Я заметил, что 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 голосов
/ 08 октября 2019

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