SwiftUI:函数声明了一个不透明的返回类型,但其主体中的返回语句没有匹配的底层类型



我试图编写一个静态函数,如下所示:

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)
}
}
}
}

但我得到了这个错误:

函数声明了一个不透明的返回类型,但其主体中的返回语句没有匹配的底层类型

你能帮我理解并解决这个错误吗?

谢谢

在这种情况下,您需要使用@ViewBuilder(并删除返回,因为返回会禁用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)
}
}
}
}

最新更新