swift - SwiftUI:NavigationLink 无意中点击并在表单内激活
问题描述
我似乎在将 aNavigationLink
重新格式化为Form
. MyNavigationLink
是通过isActive
按下切换按钮来激活的showNext
。
问题是,NavigationLink
即使按钮不存在,似乎也可以自行激活,方法是点击Form
似乎NavigationLink
为EmptyView
. 似乎Form
甚至为EmptyViews
.
所以我在想可能有一些可能的解决方案,但我不确定这些是否可能:
(1) 在不禁用导航行为的情况下,以某种方式完全隐藏为NavigationLink
/创建的行。EmptyView
(2) 覆盖的Form
格式NavigationLink
,使其在点击时不会被激活。
编辑:似乎选项 2 是可能的,.disabled(true)
但空白部分仍然可见,这在这似乎有点 hacky 之上是不可取的。
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)
)
}
}
}
推荐阅读
- jquery - 在没有 npm 的 Visual Studio 上将引导程序和 jquery 依赖项添加到 ASP.NET Core 项目
- windows - 有没有办法在ubuntu中创建逻辑图像(.l01)
- ubuntu - 终结者在右键单击、未聚焦(在窗口外单击)等时关闭
- php - 将 Json 文件对象分配给变量
- postgresql - 字符串比较的问题在 Postgres 中包含“_”
- java - java.lang.ClassCastException:java.lang.String 无法转换为 org.json.JSONObject
- javascript - 将附加属性传递给路由器元字段值
- go - 如何创建字符串数组并从 []net.ip 追加数据
- javascript - laravel刀片中如何使用javascript方法触发器调用vuejs方法
- java - 如何使用junit在springboot应用程序中为嵌入式kafka编写测试用例