我了解到我不应该AnyView()
在 SwiftUI 中使用。我已经编写了许多带有 switch 语句的函数来返回相应的视图,如下面的代码所示。我正在尝试学习将 switch 语句从AnyView()
struct T01: View{
var body: some View{
VStack{
showView(i: 1)
}
}
func showView(i: Int) -> some View{
switch(i){
case 0: return AnyView(viewOne)
case 1: return AnyView(viewTwo)
default: return AnyView(EmptyView())
}
}
var viewOne: some View {
Text("View One")
}
var viewTwo: some View {
Text("View Two")
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!!!
您的showView
函数每次都必须返回相同类型的视图,这就是AnyView
有效的原因。
您有几个选项可以解决此问题:
将所有内容包裹在另一个中View
,例如Group
func showView(i: Int) -> some View {
Group {
switch i {
case 0:
viewOne
case 1:
viewTwo
default:
EmptyView()
}
}
}
Run Code Online (Sandbox Code Playgroud)
@ViewBuilder
用属性标记函数
@ViewBuilder
func showView(i: Int) -> some View {
switch i {
case 0:
viewOne
case 1:
viewTwo
default:
EmptyView()
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
46 次 |
最近记录: |