我想调用一个函数,在之后单击一个项目,然后在之前显示目标视图。
以下代码似乎无效:调用了myFunction
,但未显示目标视图。
看起来onTapGesture
覆盖了NavigationLink
目标。
NavigationView {
List(restaurants) { restaurant in
NavigationLink(destination: RestaurantView(restaurant: restaurant)) {
RestaurantRow(restaurant: restaurant)
}.onTapGesture { myModel.myFunction(restaurant) }
}
}
在单击列表项时如何同时拥有两者?
答案 0 :(得分:0)
尝试将NavigationLink
添加到Button
中,例如:
Button(action: {
//Call here
myModel.myFunction(restaurant)
}, label: {
NavigationLink(destination: RestaurantView(restaurant: restaurant)) {
RestaurantRow(restaurant: restaurant)
}
})
编辑粘贴的测试代码,请直接尝试
struct TestNavigationView: View {
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: Text("Detail").onAppear() {
test()
}) {
Text("Click")
}
}
}
}
func test() {
print("Hell0")
}
}
另一种方法:(如果List
在那儿可能不起作用)
struct TestNavigationView: View {
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: Text("Detail")) {
Text("Click")
}.simultaneousGesture(TapGesture().onEnded{
test()
})
}
}
}
func test() {
print("Hell0")
}
}