请教一下各位 iOSer 巨佬们一个 SwiftUI sheet 组件的问题

200 天前
 realzzz

页面内容是:有一个卡片列表,点击卡片,弹窗展示卡片详情。 目前问题,首次点击后,弹窗有打开,但是弹窗里没有渲染内容,关闭后打开其它卡片可正常显示。。。

简化代码如下:

@State private var showStudentDetail: Bool = false
@State private var studentDetail: Student?                    
...

VStack(alignment: .leading, spacing: 12) {
  ForEach(students) { student in
    CardView(student: student)
      .onTapGesture {
        studentDetail = student
        showStudentDetail.toggle()
      }
    }
    .sheet(isPresented: $showStudentDetail) {
      if let studentDetail = studentDetail {
        StudentDetailView(student: studentDetail)
      }
    }
}
1459 次点击
所在节点    Swift
2 条回复
ansonsiva
200 天前
我记得.sheet 在你整个 view 出来的时候就已经渲染了
应该问题就是这个吧
kinfuy
73 天前
渲染时机的问题,studentDetail 可以试试 Binding 传入

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1036449

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX