本文介绍了SwiftUI列出空状态视图/修饰符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想知道当列表的数据源为空时如何在列表中提供空状态视图.下面是一个示例,其中我必须将其包装在 if/else
语句中.有没有更好的选择,还是有办法在 List
上创建一个修饰符,使之成为可能,即 List.emptyView(Text("))
.
I was wondering how to provide an empty state view in a list when the data source of the list is empty. Below is an example, where I have to wrap it in an if/else
statement. Is there a better alternative for this, or is there a way to create a modifier on a List
that'll make this possible i.e. List.emptyView(Text("No data available..."))
.
import SwiftUI
struct EmptyListExample: View {
var objects: [Int]
var body: some View {
VStack {
if objects.isEmpty {
Text("Oops, loos like there's no data...")
} else {
List(objects, id: \.self) { obj in
Text("\(obj)")
}
}
}
}
}
struct EmptyListExample_Previews: PreviewProvider {
static var previews: some View {
EmptyListExample(objects: [])
}
}
推荐答案
解决方案之一是使用 @ViewBuilder
:
struct EmptyListExample: View {
var objects: [Int]
var body: some View {
listView
}
@ViewBuilder
var listView: some View {
if objects.isEmpty {
emptyListView
} else {
objectsListView
}
}
var emptyListView: some View {
Text("Oops, loos like there's no data...")
}
var objectsListView: some View {
List(objects, id: \.self) { obj in
Text("\(obj)")
}
}
}
这篇关于SwiftUI列出空状态视图/修饰符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!