首页 > 解决方案 > SwiftUI 视图中的数据数组在从 UIViewController 返回时不会刷新

问题描述

我有一个项目列表,每个项目都有一个导航链接。触发时,它会从 SwiftUI 调用 UIViewController,对一些数据进行操作,然后返回。当pdfsList我从视图控制器返回时,需要重新获取数组。我该如何做到这一点?

struct ContentView : View {
    @State var pdfsList: [PDFSummary] = Realm.studyHallRealm.objects(PDFSummary.self).sorted(by: { $0.name < $1.name })

    var body: some View {
      NavigationView {
        List(pdfsList) { pdfSummary in
            NavigationLink(destination: InterfaceController(url: pdfSummary.dynamicURL(), summary: pdfSummary)) {
                Text(pdfSummary.name)
                .foregroundColor(self.itemColor(pdfSummary: pdfSummary))
            }
        }.navigationBarTitle(Text("PDF Library (SwiftUI)"))
    }
}  

标签: swiftui

解决方案


我认为您可以在列表中的 .onAppear 操作中获取数据

NavigationView {
        List(pdfsList) { pdfSummary in
            NavigationLink(destination: InterfaceController(url: pdfSummary.dynamicURL(), summary: pdfSummary)) {
                Text(pdfSummary.name)
                .foregroundColor(self.itemColor(pdfSummary: pdfSummary))
            }
        }.navigationBarTitle(Text("PDF Library (SwiftUI)"))
         .onAppear {
               self.pdfsList = Realm.studyHallRealm.objects(PDFSummary.self).sorted(by: { $0.name < $1.name })
            }
    }

推荐阅读