繁体   English   中英

您如何找出在 SwiftUI 中点击了哪个视图?

[英]How do you find out which view was tapped in SwiftUI?

所以如果我在 SwiftUI 中做一个轻击手势识别器,像这样......

@State var tapped = false

var tap: some Gesture {
    TapGesture(count: 1)
        .onEnded {
            _ in self.tapped = !self.tapped
            print("tapped!")

    }

}

...然后将此点击手势识别器添加到列表中以编程方式创建的视图中,就像这样...

 List {
                // loop through all the posts and create a post view for each item
                ForEach(posts) { post in
                    PostView(post: post)
                    .gesture(self.tap)

                }
            }

...这行得通,水龙头确实注册了,但我不知道如何确定哪个视图被点击,以便我可以使用水龙头更新变量或调用关联视图的 function。

您可以使用存储selectedPost@State属性找到被点击的帖子,如下所示。 并像我对背景所做的那样更新View

struct ContentView: View {

  var posts: [Post] = []
  @State private var selectedPost: Post?
  @State private var tapped = false

  var body: some View {
    List {
      ForEach(posts) { post in
        PostView(post: post)
          .background(post == selectedPost ? Color.clear : Color.green)
          .onTapGesture {
            self.selectedPost = post
            self.tapped.toggle()
          }
      }
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM