【问题标题】:SwiftUi sheet is blank on first tap but works correctly afterwardsSwiftUi 表在第一次点击时是空白的,但之后可以正常工作
【发布时间】:2023-04-07 05:10:01
【问题描述】:

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

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)" )
                  }
             }

        }

【问题讨论】:

标签: swift swiftui swiftui-ontapgesture


【解决方案1】:

显然,解决方法之一是使用StateObject 而不是StateHere's a Medium article that demonstrates the solution.

【讨论】:

  • 可以确认这项工作。感谢您的链接!
  • 是的,它有效。显然是 iOS 中的一个错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
  • 2020-12-27
  • 1970-01-01
相关资源
最近更新 更多