【问题标题】:navigationBarItems "Type [view] cannot conform to 'View'; only struct/enum/class types can conform to protocols"navigationBarItems "类型 [view] 不能符合 'View';只有结构/枚举/类类型可以符合协议"
【发布时间】:2020-06-12 04:30:59
【问题描述】:

我正在尝试将一些 navigationBarItems 应用到我的视图中,但我收到了这个错误 - Type '() -> Text' cannot conform to 'View'; only struct/enum/class types can conform to protocols

我已经能够将代码简化为这一点。谁知道是什么原因造成的?

struct NewEntry: View {

    var body: some View {
        NavigationView {
            VStack {
                Text("Hello World")
            }
            .navigationBarItems(trailing: {
                Text("Hello World")
            })
        }
    }
}

【问题讨论】:

    标签: ios swift swiftui


    【解决方案1】:

    .navigationBarItems(trailing:) 接受View
    您在{} 内提供View

    .navigationBarItems(trailing: {
        Text("Hello World")
    })
    

    解决办法:

    .navigationBarItems(trailing: Text("Hello, World"))
    

    SwiftUI的编译器有点笨,小的语法错误会导致它在奇怪的地方抛出奇怪的错误。

    【讨论】:

    • 谢谢。我习惯于对类似的东西使用括号语法,但不知道它不适用于 navigationBarItems
    • @ChristianCamaisa 这取决于实现。你说你已经习惯的花括号叫做trailing closures。在这种情况下,它们看起来像 () -> _。例如比较NavigationView(content: () -> _).navigationBarItems(trailing: View)的函数签名
    猜你喜欢
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多