繁体   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