0

我想点击一个项目之后,显示目标视图之前调用一个函数。

下面的代码似乎不起作用:myFunction被调用,但未显示目标视图。

看起来onTapGesture覆盖了NavigationLink目的地。

NavigationView {
    List(restaurants) { restaurant in
        NavigationLink(destination: RestaurantView(restaurant: restaurant)) {
            RestaurantRow(restaurant: restaurant)
        }.onTapGesture { myModel.myFunction(restaurant) }
    }
}

单击列表项时,如何同时拥有两者?

  • 函数被调用
  • 显示目标视图
4

1 回答 1

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")
    }
}
于 2020-10-30T01:18:53.210 回答