问题
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: [])
}
}
回答1:
One of the solutions is to use a @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)")
}
}
}
来源:https://stackoverflow.com/questions/62398534/swiftui-list-empty-state-view-modifier