【发布时间】:2020-08-20 01:53:54
【问题描述】:
我的列表单元格中有两个 NavigationLink
我想点击一次去destination1,点击两次去destination2。 所以我添加了两个点击手势来控制导航。
但是当我点击时,有两个问题:
- 1 不会调用点击手势块。
- 2 这两个导航链接即使在 TextView 后面也会自动激活。 真正的效果是:点击单元格->去Destination1->返回首页->去Destination2->返回首页
这是我的代码:
struct MultiNavLink: View {
@State var mb_isActive1 = false;
@State var mb_isActive2 = false;
var body: some View {
return
NavigationView {
List {
ZStack {
NavigationLink("", destination: Text("Destination1"), isActive: $mb_isActive1)
NavigationLink("", destination: Text("Destination2"), isActive: $mb_isActive2)
Text("Single tap::go to destination1\nDouble tap,go to destination2")
}
.onTapGesture(count: 2, perform: {()->Void in
NSLog("Double tap::to destination2")
self.mb_isActive2 = true
}).onTapGesture(count: 1, perform: {()->Void in
NSLog("Single tap::to destination1")
self.mb_isActive1 = true
})
}.navigationBarTitle("MultiNavLink",displayMode: .inline)
}
}
}
我已经尝试删除 List 元素,然后一切都按我的预期进行。 似乎是 List 元素让一切变得奇怪。
我找到了这个问题:SwiftUI - Two buttons in a List,但情况和我不一样。
期待您的回复,非常感谢...
【问题讨论】:
-
我认为您的架构不正确。尝试从
List中删除ZStack和NavigationLink并替换为Button,然后将.onTapGesture修饰符应用于Button,将导航链接嵌入到每个perform代码中。跨度>
标签: ios list swiftui swiftui-navigationlink vstack