gpt4 book ai didi

ios - SwiftUI - 列表中的两个导航链接

转载 作者:行者123 更新时间:2023-12-01 21:26:02 25 4
gpt4 key购买 nike

我的列表单元格中有两个 NavigationLink

我想点击一次时转到目的地1,点击两次时转到目的地2。所以我添加了两个点击手势来控制导航。

但是当我点击时,有两个问题:

  • 1 不会调用点击手势 block 。
  • 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 ,但是情况跟我不一样。

期待您的答复,非常感谢...

最佳答案

尝试以下方法 - 其想法是隐藏可见内容背景中的链接,并使它们对 UI 不活动,但以编程方式激活。

使用 Xcode 12/iOS 14 进行测试。

struct MultiNavLink: View {

var body: some View {
return
NavigationView {
List {
OneRowView()
}.navigationBarTitle("MultiNavLink", displayMode: .inline)
}
}
}

struct OneRowView: View {
@State var mb_isActive1 = false
@State var mb_isActive2 = false

var body: some View {
ZStack {
Text("Single tap::go to destination1\nDouble tap,go to destination2")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.contentShape(Rectangle())
.background(Group {
NavigationLink(destination: Text("Destination1"), isActive: $mb_isActive1) {
EmptyView() }
.buttonStyle(PlainButtonStyle())
NavigationLink(destination: Text("Destination2"), isActive: $mb_isActive2) {
EmptyView() }
.buttonStyle(PlainButtonStyle())
}.disabled(true))
.highPriorityGesture(TapGesture(count: 2).onEnded {
self.mb_isActive2 = true
})
.onTapGesture(count: 1) {
self.mb_isActive1 = true
}
}
}

关于ios - SwiftUI - 列表中的两个导航链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63497247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com