简单的SwiftUI列表示例。我究竟做错了什么?

时间:2019-07-14 21:25:36

标签: swiftui

我在将字符串数据绑定到列表内的文本时遇到问题。不确定我到底在做什么错。

enter image description here

1 个答案:

答案 0 :(得分:2)

这是一个简单的修复。将数组传递给List时,数组中的元素需要符合Identifiable协议。 String不符合Identifiable,因此进行这项工作的方法是像这样使用.identified(by:)

struct StringList: View {
    let strings = ["1234", "5678"]

    var body: some View {
        List(strings.identified(by: \.self)) { string in
            Text(string)
        }
    }
}

您还可以在ForEach内使用List

struct StringList: View {
    let strings = ["1234", "5678"]

    var body: some View {
        List {
            ForEach(strings.identified(by: \.self)) { string in
                Text(string)
            }
        }
    }
}

这两个示例均实现了相同的输出,但第一个示例更简洁,需要的代码更少。

更新

从Xcode Beta 4开始,为了支持identified(by:)List的特定初始化器,已弃用ForEach

struct StringList: View {
    let strings = ["1234", "5678"]

    var body: some View {
        List(strings, id: \.self) { string in
            Text(string)
        }
    }
}
struct StringList: View {
    let strings = ["1234", "5678"]

    var body: some View {
        List {
            ForEach(strings, id: \.self) { string in
                Text(string)
            }
        }
    }
}