我如何在 SwiftUI 中获得 "empty view"?
How do I have an "empty view" in SwiftUI?
所以我想要一个有条件地呈现的视图,具体取决于我的模型的状态。如果每个案例都有要呈现的视图,我知道如何执行此操作,但是我如何处理在某些情况下我想显示 no 视图的情况?
例如:
struct MyView: View {
enum ViewState {
case A, B, C
}
let state: ViewState
var view: some View {
switch state {
case .A:
Text("A State")
case .B:
Text("B State")
case .C:
// empty
}
}
}
您可以使用 EmptyView()
并将您的视图标记为 @ViewBuilder var view: some View
您可以使用 EmptyView
和 (!) 将 view
属性 标记为 ViewBuilder
,如以下最终示例所示:
struct MyView: View {
enum ViewState {
case A, B, C
}
let state: ViewState
@ViewBuilder var view: some View { // << here !!
switch state {
case .A:
Text("A State")
case .B:
Text("B State")
case .C:
EmptyView() // << here !!
}
}
var body: some View { // replicated for demo
self.view
}
}
使用 Xcode 13.2
测试
struct MyView: View {
enum ViewState {
case A, B, C
}
let state: ViewState
var text: String {
switch state {
case .A:
"A State"
case .B:
"B State"
case .C:
""
}
}
var view: some View {
Text(text)
}
}
所以我想要一个有条件地呈现的视图,具体取决于我的模型的状态。如果每个案例都有要呈现的视图,我知道如何执行此操作,但是我如何处理在某些情况下我想显示 no 视图的情况?
例如:
struct MyView: View {
enum ViewState {
case A, B, C
}
let state: ViewState
var view: some View {
switch state {
case .A:
Text("A State")
case .B:
Text("B State")
case .C:
// empty
}
}
}
您可以使用 EmptyView()
并将您的视图标记为 @ViewBuilder var view: some View
您可以使用 EmptyView
和 (!) 将 view
属性 标记为 ViewBuilder
,如以下最终示例所示:
struct MyView: View {
enum ViewState {
case A, B, C
}
let state: ViewState
@ViewBuilder var view: some View { // << here !!
switch state {
case .A:
Text("A State")
case .B:
Text("B State")
case .C:
EmptyView() // << here !!
}
}
var body: some View { // replicated for demo
self.view
}
}
使用 Xcode 13.2
测试struct MyView: View {
enum ViewState {
case A, B, C
}
let state: ViewState
var text: String {
switch state {
case .A:
"A State"
case .B:
"B State"
case .C:
""
}
}
var view: some View {
Text(text)
}
}