【问题标题】:OnTapGesture does not work as expected in Navigation LinkOnTapGesture 在导航链接中无法按预期工作
【发布时间】:2020-06-06 11:35:57
【问题描述】:

当我点击列表中显示的 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"))
        }
    }

【问题讨论】:

    标签: swift swiftui


    【解决方案1】:

    要实现您的要求,请执行以下操作:

    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,你也可以这样做: (来自:How could I do something before navigate to other view by 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")
            }
        }
    }
    

    【讨论】:

    • 谢谢。我试过了,但没有解决问题。我点击了列表中的文本,它起作用了,但是点击文本区域以外的任何内容都没有激活 onTapGesture。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 2021-05-18
    • 1970-01-01
    • 2010-11-26
    • 2017-06-17
    • 1970-01-01
    相关资源
    最近更新 更多