我正在尝试在 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,因此满足内容类型要求,对吧?
您遇到的错误表明内容闭包内的 ForEach 表达式的返回类型与内容闭包本身的预期返回类型不匹配修改扩展以确保返回类型兼容
扩展选择器,其中 SelectionValue:可识别,标签 == 文本 {
init<Data>(_ title: String, selection: Binding