SwiftUI: NavigationLink непреднамеренно активируется внутри формы - PullRequest
0 голосов
/ 28 апреля 2020

Кажется, у меня проблема, когда NavigationLink переформатируется в Form. Мой NavigationLink активируется через isActive при нажатии кнопки, которая переключает showNext.

Проблема в том, что NavigationLink, кажется, активируется сам по себе, даже когда кнопка не существует, нажав пустую строку, которую Form создает для NavigationLink, которая должна просто быть EmptyView. Кажется, что Form создает строки даже для EmptyViews.

Поэтому я подумал, что могут быть некоторые возможные решения, но я не уверен, что они возможны:

(1) Каким-то образом скрыть строку, созданную для NavigationLink / EmptyView полностью без отключения навигации.

(2) Переопределить форматирование Form для NavigationLink, чтобы оно не активировалось при нажатии.

РЕДАКТИРОВАТЬ: Похоже, вариант 2 возможен с .disabled(true), но пустая секция все еще видна, что нежелательно поверх этого, кажется немного хакерским.

struct FormView  : View {
    @State var showNext: Bool = false

    var body: some View {
        NavigationView {
            Form {
               Section {
                   VStack {
                       Text("Hello")

                       NavigationLink(destination: Text("Detail View"), isActive: $showNext) 
                       { EmptyView() }
                   }
               }
            }
        }
    }
}

1 Ответ

2 голосов
/ 28 апреля 2020

Решение состоит в том, чтобы скрыть ссылку в фоне некоторого представления, как показано ниже

Form {
 Section {
   VStack {
      Text("Hello")
        .background(
           NavigationLink(destination: Text("Detail View"), isActive: $showNext)
             { EmptyView() }.disabled(!showNext)
         )
     }
   }
}
...