gpt4 book ai didi

swiftui - NavigationLink onTapGesture 和导航未持续触发

转载 作者:行者123 更新时间:2023-12-03 22:40:42 25 4
gpt4 key购买 nike

在 SwiftUI View 中,我通过创建一个 VStack 来实现一个垂直滚动列表,该 VStack 包含一个包含一些文本的 NavigationView。我通过循环遍历popularFeedTypes 对象来构建它,为popularFeedTypes 对象中的每个项目创建一个NavigationLink。如果用户单击 NavigationLink,用户将被推送到名为 FeedTypeView 的新 View 。你可以看到下面的代码。

VStack{
NavigationView{
List (self.popularFeedTypes.popularFeedTypes!, id: \.self) { feedType in
NavigationLink(destination: FeedTypeView(feedType: feedType)) {
Text(feedType.feedType)
}.onTapGesture {
print("TAPPED")
}
}
.navigationBarTitle(Text("Discover"), displayMode: .inline)
}
}

我遇到的问题是,如果我在 NavigationLink 上有一个 onTapGesture 操作,我会在模拟器中遇到不同的行为,具体取决于我单击行的方式。如果我单击行右侧的文本或箭头 (>),onTapGesture 会触发但不会发生导航。如果我单击文本和箭头之间的空格,则 onTapGesture 不会触发但会发生导航。如果我删除 onTapGesture 代码,单击三个位置中的任何一个都会导致导航发生。所以我的问题是即使存在 onTapGesture 操作也不应该发生导航吗?无论您单击构成 NavigationLink 的行的何处,都不应该触发 onTapGesture 操作吗?

最佳答案

您可以使用 onAppear 来处理点击事件。

VStack {
NavigationView {
List(self.popularFeedTypes.popularFeedTypes!, id: \.self) { feedType in
NavigationLink(
destination: FeedTypeView(feedType: feedType).onAppear { print("TAPPED") }) {
Text(feedType.feedType)
}
}
.navigationBarTitle(Text("Discover"), displayMode: .inline)
}
}

关于swiftui - NavigationLink onTapGesture 和导航未持续触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59040566/

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