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

Ano*_*ude 7 swift 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)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

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

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

谢谢

Asp*_*eri 11

您需要@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)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)