【问题标题】:SwiftUI view argument in preview missing argument for parameter 'content' in call预览中的 SwiftUI 视图参数缺少调用中参数“内容”的参数
【发布时间】:2022-01-02 04:10:15
【问题描述】:

Hi 试图创建一个仅具有背景渐变的可重用组件,但在预览中出现错误

这是组件

import SwiftUI

struct Patterns<Content: View>: View {
    @ViewBuilder var content: Content
    
    var body: some View {
        ZStack {
            LinearGradient(
                gradient: Gradient(
                    colors: [Color.red, Color.blue]
                ), startPoint: .leading, endPoint: .trailing)
            content
        }
        
    }
}

struct Patterns_Previews: PreviewProvider {
    static var previews: some View {
        Patterns {
            Text("Hello")
        }
    }
}

但预览看起来像这样

【问题讨论】:

  • 您在此处包含的内容编译并运行良好。但是,如果您查看屏幕截图,您会看到它引用了您的问题中未包含的代码。
  • 你说得对,错误出现在其他使用该组件但没有内容参数的文件中,谢谢

标签: ios swift xcode swiftui


【解决方案1】:

视图构建器实际上是函数生成视图的包装器,所以这里是固定变体:

struct Patterns<Content: View>: View {
    @ViewBuilder var content: () -> Content     // << here !!

    var body: some View {
        ZStack {
            LinearGradient(
                gradient: Gradient(
                    colors: [Color.red, Color.blue]
                ), startPoint: .leading, endPoint: .trailing)
            content()                          // << here !!
        }

    }
}

使用 Xcode 13.2 / iOS 15.2 测试

【讨论】:

  • 谢谢,这也帮助我理解 view 参数,但我的错误是在其他文件中调用此组件而没有 content 参数,所以预览不起作用,我现在不知道为什么,因为只是预览,但我认为 Xcode 需要一切正常才能呈现一个简单的预览。
猜你喜欢
  • 1970-01-01
  • 2019-12-08
  • 2017-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多