如何使用 SwiftUI 将数组绑定到列表

Posted

技术标签:

【中文标题】如何使用 SwiftUI 将数组绑定到列表【英文标题】:How to bind an array to a list using SwiftUI 【发布时间】:2020-03-23 22:56:46 【问题描述】:

我正在尝试将数组绑定到 SwiftUI 中的列表。鉴于我对 SwiftUI 等很陌生,我一直在努力理解如何做到这一点。人。这就是我想要做的:

struct ContentView: View 
    @Binding var text: String
    @Binding var results: [MKLocalSearchCompletion]

    var body: some View 
        VStack 
            MapView()
            MapSearchBar(text: $text, results: $results)
            List($results)  result in
                Text(result.title)
            
        
    

目前正在获取 Generic parameter 'SelectionValue' could not be inferred',我明白了,但我似乎无法找到自己的方式......

我还没有在这方面遇到过很棒的 doco,但我很高兴有人指出。

【问题讨论】:

【参考方案1】:

results 是一个绑定,因此列表参数中不需要read-write binding。另外,要修复泛型参数,请添加id

struct ContentView: View 
    @Binding var text: String
    @Binding var results: [MKLocalSearchCompletion]

    var body: some View 
        VStack 
            MapView()
            MapSearchBar(text: $text, results: $results)
            List(results, id: \.self)  result in
                Text(result.title)
            
        
    

【讨论】:

非常感谢。那成功了。将$ 仅用于读写现在对我来说完全有意义。 我也喜欢\.self。我以前没见过。 我有类似的问题,但我不明白解决方案,因为程序看起来与我的情况不同。我在Data 类中有一个名为repository names 的3 个字符串的示例数组。如何将其绑定到新创建的列表@sfung3?

以上是关于如何使用 SwiftUI 将数组绑定到列表的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 将数组的元素作为绑定传递给子视图

如何使用 .reversed() 处理 SwiftUI 列表数组的 .onDelete

如何使用 SwiftUI 将值数组写入 Firestore

在 ForEach 循环中绑定时,如何阻止 SwiftUI TextField 失去焦点?

如何在 SwiftUI 中使用可观察对象并与 NavigationLink 绑定?

如何使用 SwiftUI 将图像对齐到列表行的右上角?