Listview 不带列表视图背景色的ProgressView,用于异步加载内容

Listview 不带列表视图背景色的ProgressView,用于异步加载内容,listview,swiftui,progress-bar,Listview,Swiftui,Progress Bar,当列表项未加载到模型变量中时,将显示进度视图。这是正确的行为。但是背景显示时,就好像列表中的项目是ProgressView() 我想知道是否有办法使列表的背景颜色仅在加载数据时消失,并在加载数据时返回正常背景 我如何在下面的代码中实现这一点 import SwiftUI struct HomeView: View { @EnvironmentObject var model: Model var body: some View { NavigationVie

当列表项未加载到模型变量中时,将显示进度视图。这是正确的行为。但是背景显示时,就好像列表中的项目是
ProgressView()

我想知道是否有办法使列表的背景颜色仅在加载数据时消失,并在加载数据时返回正常背景

我如何在下面的代码中实现这一点

import SwiftUI

struct HomeView: View {

    @EnvironmentObject var model: Model

    var body: some View {
        NavigationView {
            VStack {
                List {

                    Section(header: Text("People")) {
                        if let people = model.people {
                            ForEach(people, id: \.id) { person in
                                Text(person.name)
                            }
                        } else {
                            ProgressView()
                        }
                    }

                    Section(header: Text("Chat Rooms")) {
                        if let rooms = model.rooms {
                            ForEach((rooms, id: \.id) { room in
                                Text(room.name)
                            }
                        } else {
                            ProgressView()
                        }
                    }

                }
                .listStyle(InsetGroupedListStyle())
            }
            .navigationBarTitle("Home")
        }
    }
}

关于为什么会出现这种行为,最简单的答案是您已将
ProgressView()
作为列表中的一项。如果去掉
If
语句,您可以看到
ProgressView()
实际上在列表中。如果要将其设置为背景,则必须将其设置为要作为背景的任何视图的背景:

Text(person.name)
    .background(
        ProgressView()
    )
您还可以将逻辑置于后台以显示ProgressView()或其他视图。我不完全确定你想要它是什么样子