首页 > 解决方案 > SwiftUI:.onappear 未在第一个选项卡中显示来自 firebase 的数据

问题描述

在我的应用程序中,开始屏幕中的第一个选项卡不显示任何数据。选项卡的代码如下:

import SwiftUI
import FirebaseFirestore
import Firebase
import FirebaseFirestoreSwift

struct LibraryScreen: View {
    @ObservedObject var viewModel = BookViewModel()
    
    
    var body: some View {
        VStack
            {
                List(viewModel.books){book in
                    Text(book.name)
                }
            }.onAppear(){
                self.viewModel.fetchData()
                print("Fetching books")
            }
        .navigationBarTitle("Library", displayMode: .inline)
    }
}

struct LibraryScreen_Previews: PreviewProvider {
    static var previews: some View {
        LibraryScreen()
    }
}

但是,当从另一个选项卡返回时,数据会按预期显示。有什么我应该代替的东西.onappear吗?

编辑:只是为了澄清我希望viewModel.fetchData在启动时显示数据而不必实现按钮,但是尽管打印语句显示在控制台中,但获取的数据没有。

标签: firebaseswiftuitabview

解决方案


尝试这个。

List {
    if !viewModel.books.isEmpty {
        ForEach(viewModel.books) { book in {
            Text(book.name)
        }
    }
}

推荐阅读