自定义 Picker init 方法中出现“无法转换类型的返回表达式”错误

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

我正在尝试在 SwiftUI Picker 上构建扩展,但在尝试编译时,我在内容闭包中收到以下错误:

无法将类型“ForEach”的返回表达式转换为返回类型“Content”

代码如下:

extension Picker where SelectionValue: Identifiable, Label == Text {
    
    init<Data>(_ title: String, selection: Binding<SelectionValue>, items: Data, @ViewBuilder itemContent: @escaping (Data.Element) -> some View) where Data: RandomAccessCollection, Data.Element == SelectionValue {
        self.init(title, selection: selection, content: {
            ForEach(items) { item in
                itemContent(item).tag(item)
            }
        })
    }
}

ForEach
应该符合View,因此满足内容类型要求,对吧?

swiftui swiftui-picker
1个回答
-1
投票

您遇到的错误表明内容闭包内的 ForEach 表达式的返回类型与内容闭包本身的预期返回类型不匹配修改扩展以确保返回类型兼容

扩展选择器,其中 SelectionValue:可识别,标签 == 文本 {

init<Data>(_ title: String, selection: Binding
© www.soinside.com 2019 - 2024. All rights reserved.