SwiftUI:函数声明了不透明的返回类型,但其主体中的return语句没有匹配的基础类型

时间:2020-10-29 08:24:19

标签: 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)
            }
        }
    }
}

但是我遇到了这个错误:

函数声明了不透明的返回类型,但其主体中的return语句没有匹配的基础类型

您能帮我理解和解决此错误吗?

谢谢

1 个答案:

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