静态方法“buildExpression”要求“DescriptionInputView”符合“AccessibilityRotorContent”

问题描述 投票:0回答:1

我在将参数传递给自定义视图时遇到问题,这可能是这里的确切问题

struct DescriptionInputView: View {
    @ObservedObject var viewModel: ContentViewModel
    @State private var description: String = ""
    var title: String
    var audioRequired: Bool
    var videoRequired: Bool
    var imageRequired: Bool
    var documentRequired: Bool

    var body: some View {
        VStack(alignment: .leading) {
            // Label
            Text(title)
                .font(.headline)
                .padding(.bottom, 5)
            Spacer()
            if audioRequired || videoRequired || imageRequired || documentRequired {
                AttachmentView(viewModel: viewModel )
            }
            
            // TextField with underline
            VStack {
                TextField(title, text: $description)
                    .keyboardType(.default) // Default keyboard for text input
                    .padding(.vertical, 10) // Padding for the text
                    .overlay(Rectangle().frame(height: 1).padding(.top, 35)) // Line below the TextField
                    .foregroundColor(.gray) // Text color
            }
            
            // Character limit hint
            Text("Minimum 1 - Maximum 100 characters allowed")
                .font(.caption)
                .foregroundColor(.gray)
            
            Spacer()
        }
        .padding()
    }
}
    var items: [CRItemModel]
    @ObservedObject var viewModel: ContentViewModel
...

 ForEach(items, id: \.id) { item in
                    switch item.getType().rawValue {
                    case "TEXT":
                        DescriptionInputView(
                            viewModel: viewModel, title: item.title,
                            audioRequired: item.audioRequired,
                            videoRequired: item.videoRequired,
                            imageRequired: item.imageRequired,
                            documentRequired: item.documentRequired
                        )
.....

我在 AccessibilityRotorContent 的 ForEach DescriptionInputView 中遇到错误,可能是什么问题?谢谢!

swift swiftui
1个回答
0
投票

尝试将 viewModel 传递为

EnvironmentObject

struct DescriptionInputView: View {
    @EnvironmentObject var viewModel: ContentViewModel

    struct ContentView: View {
        @StateObject var viewModel = ContentViewModel()
    
        var body: some View {
            ForEach(items, id: \.id) { item in
                if let title = item.title {
                    DescriptionInputView(
                        title: title,
                        audioRequired: item.audioRequired ?? false,
                        videoRequired: item.videoRequired ?? false,
                        imageRequired: item.imageRequired ?? false,
                        documentRequired: item.documentRequired ?? false
                    )
                    .environmentObject(viewModel) // Inject the viewModel here
                }
            }
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.