SwiftUi 表在第一次点击时是空白的,但之后可以正常工作

Posted

技术标签:

【中文标题】SwiftUi 表在第一次点击时是空白的,但之后可以正常工作【英文标题】:SwiftUi sheet is blank on first tap but works correctly afterwards 【发布时间】:2021-01-18 17:17:50 【问题描述】:

我有一张放在 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)" )
                  
             

        

【问题讨论】:

这是否回答了您的问题***.com/a/64798254/12299030? (可能重复) 可能与 ios 14 更改有关 - 请参阅 iOS14 introducing errors with @State bindings。你用什么环境? 是的,它回答了我的问题,谢谢。我正在使用 IOS 14。 【参考方案1】:

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

【讨论】:

可以确认这项工作。感谢您的链接! 是的,它有效。显然是 iOS 中的一个错误。

以上是关于SwiftUi 表在第一次点击时是空白的,但之后可以正常工作的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 工作表在首次出现时不会访问状态变量的最新值

SwiftUI 中图像按钮的可点击区域

SwiftUI:工作表第一次无法显示正确的值

如何在 SwiftUI 中使整个列表行成为 NavigationLink

如何指定或更改按钮 SwiftUI 的可点击区域

swiftui 2.0 图片库 onTapgesture 只显示数组中的第一张图片