ios 非空列表的SwiftUI列表显示为空

jjhzyzn0  于 2023-01-10  发布在  iOS
关注(0)|答案(2)|浏览(164)

我试图在SwiftUI中创建一个简单的列表视图,但是无论数组中有多少对象,它都显示为空白(如下图所示)。如果我删除列表,它将显示数组的元素。我知道数组空。有什么建议吗?
这是我的密码”

var body: some View {
        NavigationView {
            ScrollView {
                if(leaderboard.isEmpty) {
                    
                    VStack {
                        Text("No Entries Yet :(")
                            .foregroundColor(.gray)
                            .font(.largeTitle)
                    }
                } else {
                    ScrollView {
                        List {
                            ForEach(leaderboard.asArray(), id: \.self) { score in
                                Text("\(score)")
                            }
                        }
                    }
                }
            }
            .navigationBarTitle("Leaderboard")
        }
    }

以下是视图当前显示的内容:

此外,如果你能帮助我使Text("No Entries Yet :( ")在视图中垂直居中,那就加分了。

uqjltbpv

uqjltbpv1#

你不需要ScrollView中的任何一个--如果列表为空,你只有文本视图;如果列表不为空,List提供必要的滚动视图。
要在列表为空时将文本垂直居中,只需在上方和下方添加Spacer视图:

struct ContentView: View {
    var body: some View {
        
        let leaderboard:[Int] = [10,20,30,40,100,1999,1393,444]
        NavigationView {
            if(leaderboard.isEmpty) {
                VStack {
                    Spacer()
                    Text("No Entries Yet :(")
                        .foregroundColor(.gray)
                        .font(.largeTitle)
                    Spacer()
                }
            } else {
                List {
                    ForEach(leaderboard, id: \.self) { score in
                        Text("\(score)")
                    }
                }
            }
        }
        .navigationBarTitle("Leaderboard")
    }
}
voj3qocg

voj3qocg2#

如果你的列表是空的,只需添加另一行没有背景。

if rows.isEmpty {
    Text("No records")
        .listRowBackground(EmptyView())
}

相关问题