我想解决在数据可用时先显示EmptyView,然后再显示ContentView的问题

时间:2020-07-13 10:18:18

标签: swiftui

在viewModel上获取用户ID。 FreeView将根据是否获得用户ID调度视图。

如果我可以获取用户ID,则在显示EmptyView之后显示ContentView时会遇到问题,我想提出一个解决此问题的想法。

如果在提取后userID为空,则EmptyView 如果不为空,则要显示ContentView。

如果不为空,将显示EmptyView,然后显示ContentView。

这是示例源代码

struct FreeView: View {
    @ObservedObject var freeViewViewModel: FreeViewViewModel
    var body: some View {
        VStack(alignment: .center, spacing: 8) {
            if self.freeViewViewModel.userID.isEmpty {
                // EmptyView
            } else {
                // Content View
            }
        }
    }
}

final class FreeViewViewModel: ObservableObject {
    @Published var userID: [String] = []
    
    init() {
        self.fetchUserID()
    }
    private func fetchUserID() {
        // get userID
    }
}

1 个答案:

答案 0 :(得分:0)

要更新ContentView,请执行以下操作

private func fetchUserID() {
    // get userID
    
    // ... your fetch request here ...

        // ... error response handing here

       // in callback of your async fetcher do like the following
       guard let fetchedUserId = fetchedUserId else { return }

       DispatchQueue.main.async {
         self.userID = [fetchedUserId]
       }
    }
}