在 SwiftUI 中的 ForEach 中绑定

Posted

技术标签:

【中文标题】在 SwiftUI 中的 ForEach 中绑定【英文标题】:Binding in a ForEach in SwiftUI 【发布时间】:2020-10-15 12:14:30 【问题描述】:

我使用FetchRequest 来填充元素。然后我正在使用一个列表并希望显示某种待办事项元素,您可以在其中看到哪个被选中,哪个未被选中。为此我创建了一个 CheckBoxView。

我现在的问题是,我需要将绑定传递给视图。但是如何在 ForEach 中做到这一点? 如果我有一个对我来说很容易的绑定,我只需生成一个@State 就可以了。这里怎么做?

List 
    ForEach(elements, id: \.self)  item in
        CheckBoxView(checked: item.checked)
    

这里是视图:

struct CheckBoxView: View 
    @Binding var checked: Bool
    ....

【问题讨论】:

【参考方案1】:

假设你的 elements 是 items 数组的状态,它可以是

List 
    ForEach(elements.indices, id: \.self)  i in
        CheckBoxView(checked: $elements[i].checked)
    

【讨论】:

您能解释一下为什么要使用索引吗?

以上是关于在 SwiftUI 中的 ForEach 中绑定的主要内容,如果未能解决你的问题,请参考以下文章

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

SwiftUI 是不是可以在 ForEach 中传递绑定范围?

在绑定调用中使用 SwiftUI ForEach 的迭代器变量

SwiftUI 自定义 List 不能在 ForEach 中使用 Binding

SwiftUI - 将 ForEach 与不符合可识别/可散列的绑定数组一起使用

SwiftUI 文本字段中的可选链接绑定值