swift - SwiftUI 无法在函数上返回视图
问题描述
我正在尝试返回View
基于功能的选定菜单项。但它会引发错误:
协议“视图”只能用作通用约束,因为它具有自身或相关类型要求。
那里有我的代码:
enum MenuItem {
case Main
case Report
}
struct Menu: View {
@State var activeItem: MenuItem = .Main
private func getActiveView() -> View {
switch activeItem {
case .Main:
return DashboardView()
case .Report:
return ReportView()
}
}
var body: some View {
...
getActiveView()
...
}
}
struct DashboardView: View {
var body: some View {
Text("Contact")
}
}
struct ReportView: View {
var body: some View {
Text("Contact")
}
}
我是新手SwiftUI
。任何想法如何返回View
?
解决方案
SwiftUI 2
这是使用 Xcode 12b / iOS 14 测试的解决方案
struct Menu: View {
@State var activeItem: MenuItem = .Main
// make function ViewBuilder
@ViewBuilder
private func getActiveView() -> some View {
switch activeItem {
case .Main:
DashboardView() // don't use 'return' as it disables ViewBuilder
case .Report:
ReportView()
}
}
var body: some View {
getActiveView()
}
}
推荐阅读
- python - 如何在 Sage 中获取 PolyBoRi 多项式的系数向量
- java - UML 中基于角色的访问控制
- c - 包含外部声明的枚举的麻烦 - C 代码
- ruby - 将 ruby 编译成 js 时出现 JS 错误 Opal.const_get_relative is not a function
- java - 这个方法是修改器还是访问器方法?
- java - 包含 FXML 从 .jar 抛出异常
- android - 移动到单独的班级时,此处不允许注释
- docker - 容器在运行后一直退出
- javascript - How can i replace an array element multiple times?
- php - 分配的变量在使用 PHP 的 do while 循环中不起作用