我试图编写一个像这样的静态函数:
enum NavigationViewKind {
case test1(String)
case test2
}
struct NavigationViewManager {
static func make<V: View>(_ kind: NavigationViewKind, _ contentView: @escaping () -> V) -> some View {
switch kind {
case .test1(let text):
return NavigationView {
contentView()
.navigationBarTitle(text, displayMode: .inline)
}
case .test2:
return NavigationView {
contentView()
.navigationBarTitle("Initial", displayMode: .large)
}
}
}
}
但是我遇到了这个错误:
函数声明了不透明的返回类型,但其主体中的return语句没有匹配的基础类型
您能帮我理解和解决此错误吗?
谢谢
答案 0 :(得分:2)
在这种情况下,您需要使用@ViewBuilder
(并删除return,因为return会禁用ViewBuilder)
struct NavigationViewManager {
@ViewBuilder
static func make<V: View>(_ kind: NavigationViewKind, _ contentView: @escaping () -> V) -> some View {
switch kind {
case .test1(let text):
NavigationView {
contentView()
.navigationBarTitle(text, displayMode: .inline)
}
case .test2:
NavigationView {
contentView()
.navigationBarTitle("Initial", displayMode: .large)
}
}
}
}