swift - OnTapGesture 在导航链接中无法按预期工作
问题描述
当我点击列表中显示的 NavigationLink 时,我希望代码能够正常工作。
看看这段代码。当我点击 Text("Favorite") 时,代码会移动。
但是当我点击列表时,代码不起作用。
我在 NavigationLink 本身上设置了 onTapesture,但这并没有解决问题
我们如何解决这个问题?
var body: some View {
NavigationView{
List{
NavigationLink(destination: DeliveryServiceList().environmentObject(self.userData)){
Text("Favorite")
}.onTapGesture {
self.userData.showFavoritesOnly.toggle()
}
}.navigationBarTitle(Text("Services"))
}
}
解决方案
要实现您的要求,请执行以下操作:
var body: some View {
NavigationView() {
List {
NavigationLink(destination: DeliveryServiceList().environmentObject(self.userData)) {
Text("Favorite")
}
}
}.navigationBarTitle(Text("Services"))
}
}
并将“self.userData.showFavoritesOnly.toggle()”移动到“DeliveryServiceList()”,因为你已经做了“.environmentObject(self.userData)”
在“DeliveryServiceList”中执行以下操作:
.onAppear {
self.userData.showFavoritesOnly.toggle()
}
如果您真的想使用 onTapGesture,您也可以这样做:(来自:在通过 NavigationLink 导航到其他视图之前我该怎么做?)
@State var isPresented = false
var body: some View {
NavigationView {
List {
NavigationLink(destination: DeliveryServiceList().environmentObject(self.userData)), isActive: $isPresented) {
Text("Favorite")
.onTapGesture {
self.userData.showFavoritesOnly.toggle()
self.isPresented = true
}
}
.navigationBarTitle("Services")
}
}
}
推荐阅读
- clojure - Clojure Core 函数参数位置似乎相当混乱。其背后的逻辑是什么?
- r - 使用复选框从 Shiny 中的 R DataTable 中选择特定数据并创建直方图
- discord.js - 如何在 discord.js 中重置 message.content?
- r - 在R中多次重新采样采样向量
- ios - Alamofire 5 AF.upload() 无法将图像发送到具有无效证书的服务器
- python - 在给定特定值的情况下比较两个熊猫系列元素
- mysql - 从远程网络连接到 MySQL 服务器 8.0 (windows 10)
- pdf - 将 PDF 的 0.00pt 行更改为更大的尺寸
- python - 如何从客户端更改 python 中的服务器目录?
- javascript - 如何在电子中单击按钮时打开第二个窗口