簡體   English   中英

SwiftUI:NavigationLink 無意點擊並在表單內激活

[英]SwiftUI: NavigationLink unintentionally tappable and activated inside Form

我似乎在將NavigationLink重新格式化為Form時遇到問題。 我的NavigationLink是通過isActive在按下切換showNext的按鈕時激活的。

問題是NavigationLink似乎是自行激活的,即使按鈕不存在,通過點擊Form似乎為NavigationLink創建的空行(應該只是EmptyView 似乎Form甚至為EmptyViews創建了行。

所以我在想可能有一些可能的解決方案,但我不確定這些是否可能:

(1) 在不禁用導航行為的情況下,以某種方式完全隱藏為NavigationLink / EmptyView創建的行。

(2) 覆蓋NavigationLinkForm格式,使其在點擊時不會被激活。

編輯:似乎選項 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() }
                   }
               }
            }
        }
    }
}

解決方案是將鏈接隱藏到某些視圖的背景中,如下所示

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM