2

我有一张放在 foreach 循环之外的工作表。当我第一次点击 Tapgesture 时,结果是空白的,在我第一次为我点击的每一行获得正确的数据之后。我已经阅读了 ForEach 中的 Sheet 不会遍历 SwiftUI 项目,但它仍然无法正常工作,这是我的代码。如果您查看我的代码,我有一个名为sharePost的状态变量,它在点击时获取 value.post 的值,然后shareSheet切换设置为 true 。出于某种原因,我无法在第一次点击时获得价值。有没有人对解决这个问题有任何建议

struct TimeLineView: View {
    @Binding var model: [MainModel]
    @Binding var isMainView: MainViewEnum
    @State var shareSheet = false
    @State var PostIDState = 0
    @State var sharePost = ""

var body: some View {
        ZStack
        {

         let result = model.sorted {
                        $0.id! > $1.id!
                    }
                    
                    ForEach(result) { value in
                   HStack {
                            Image("share")
                              .resizable()
                              .frame(width: 28, height: 28)
                              .onTapGesture {
                                            sharePost = value.post
                                            shareSheet.toggle()
                     
                                             }

                        }
                    }

                 }.sheet(isPresented: $shareSheet) 
                  {
                     ShareView(message:"\(sharePost)" )
                  }
             }

        }
4

1 回答 1

4

显然,解决方法之一是使用StateObject而不是State. 这是一篇演示解决方案的 Medium 文章

于 2021-01-26T17:51:37.087 回答