【问题标题】:SwiftUI Simple ForEach multiple errors does not conform to ViewSwiftUI Simple ForEach 多次报错不符合View
【发布时间】:2021-05-09 04:08:51
【问题描述】:

我正在尝试与 SwiftUI 搏斗,但我的 Xcode 版本有问题,或者我做错了什么。我正在尝试遍历一系列社交网络,但它没有遍历。我得到的错误信息是:

在“ForEach”上引用初始化程序“init(_:content:)”要求“SocialNetwork”符合“View”

通用结构“列表”要求“社交网络”符合“视图”

struct SocialNetwork: Identifiable {
let id = UUID()
let type: NetworkType
let url: String
let icon: String

}

struct ChartView: View {
    
var networks = [SocialNetwork(type: .Instagram, url: "", icon: "")]

var body: some View {
    GeometryReader { geometry in
        VStack {
            List {
                ForEach(networks) { net in
                    net
                }
            }
        }
    }
}

}

我很困惑为什么一个简单的结构需要符合 View 而它只是一个可识别的数组?

【问题讨论】:

  • 在您的 ForEach 中,您尝试在屏幕上添加一个“网络”,它是一个数据点,而不是一个视图组件。您需要将网络数据放入一个对象中,例如 Text()。

标签: swift swiftui


【解决方案1】:

由于类型 SocialNetwork 不符合查看编译器警告是正确的。您可以尝试通过将 net 替换为 Text(net.url) 来显示 ForEach 中每个 SocialNetwork 的 url。仅作为使其编译的示例

【讨论】:

  • 啊,谢谢。记下每个循环的未来
【解决方案2】:

ForEach 是一个视图容器,所以里面应该有一些视图,但是你的net 是一个模型(SocialNetwork 的实例)。放一些列表行视图,展示一个网络,比如

        List {
            ForEach(networks) { net in
                Label(net.url, image: net.icon)
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多