我正在尝试为我的应用程序创建一个有点优雅的导航系统。下面是一个尝试返回 View 类型的函数。这不编译:
func getView(view: String) -> View {
switch view {
case "CreateUser":
return CreateNewsView()
default:
return nil
}
}
Run Code Online (Sandbox Code Playgroud)
以上导致编译错误: Protocol 'View' can only be used as a generic constraint because it has Self or associated type requirements
感谢您的帮助。
Fre*_*orf 14
从 Swift 5.3 @h?ng-phúc 开始,答案在某种程度上是正确的,只需要显式添加 @ViewBuilder 属性。
@ViewBuilder func getView(view: String) -> some View {
switch view {
case "CreateUser":
Text(view)
case "Abc":
Image("Abc")
default:
EmptyView()
}
}
Run Code Online (Sandbox Code Playgroud)
旁注:请避免使用字符串文字。最好使用枚举。
我设法通过使用 AnyView() 包装器解决了这个问题:
func getView(view: String?) -> AnyView {
switch view {
case "CreateUser":
return AnyView(CreateNewsView())
default:
return AnyView(EmptyView())
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3488 次 |
| 最近记录: |