Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 使用list'在ForEach列表中是否可以进行@Binding;谁的身份证?_Xcode_Swiftui_Swiftui List - Fatal编程技术网

Xcode 使用list'在ForEach列表中是否可以进行@Binding;谁的身份证?

Xcode 使用list'在ForEach列表中是否可以进行@Binding;谁的身份证?,xcode,swiftui,swiftui-list,Xcode,Swiftui,Swiftui List,使用ParentView中的@State和ChildView中的@Binding,我们可以在打印和子视图中的两个变量的值之间建立连接。使用如下代码: ChildView(valueFromParent: $valueInParent) ForEach((1...15), id: \.self) {item in ChildView(valueFromParent[item]: self.$valueInParent[item]) } 使用@State在ParentView中具有val

使用ParentView中的@State和ChildView中的@Binding,我们可以在打印和子视图中的两个变量的值之间建立连接。使用如下代码:

ChildView(valueFromParent: $valueInParent)
ForEach((1...15), id: \.self) {item in
    ChildView(valueFromParent[item]: self.$valueInParent[item])
}
使用@State在ParentView中具有valueInParent,使用@Binding在ChildView中具有valueFromParent。这样,这两个变量现在是相关的,改变一个变量会改变另一个变量

但是,是否可以使用行的id号在ForEach循环中的两个视图之间进行绑定?大概是这样的:

ChildView(valueFromParent: $valueInParent)
ForEach((1...15), id: \.self) {item in
    ChildView(valueFromParent[item]: self.$valueInParent[item])
}
我知道另一种方法-创建一个要传递到列表的项数组,数组中包含ID:

@State private var list = [
        (id: 0, model: ListItemModel()),
        (id: 1, model: ListItemModel()),
        (id: 2, model: ListItemModel()),
        (id: 3, model: ListItemModel()),
        (id: 4, model: ListItemModel())
    ]
编辑:但我希望避免上面的数组中包含固定的项目列表


我想创建一个简单的原型,只使用这样一个ForEach循环:ForEach((1…15),id:.self)。问题是我不知道如何从列表中的特定行访问var的值。

这里是一个可能方法的演示模块。希望这会有帮助

更新:提供了两种变体-用于带型号的阵列和带型号的字典

一,。以数组作为模型容器的变量


这是可能的,但如果它真的是您所需要的,请三思,因为
ForEach(range)
是常量容器,即,您将无法更改其大小,即,在模型容器中添加/删除项可能没有效果(添加时)或由于超出范围异常而崩溃(删除时)。谢谢您告诉我这些限制。是的,这仍然是我需要的。这是为了原型的目的。快速创建列表并更改行中的某些内容。这不是为了生产,谢谢,但实际上我想把id作为可数的数字。例如:
ForEach((1…15),id:\.self)
。不要使用数组。使用数组时,从3行更改为30行比使用(1…15)更耗时。如果我使用可数数字,那么
\(self.models[I].name)
的等价物是什么?我希望在ForEach列表中使用@Binding可以访问第9行的var valueFromParent。使用类似这样的东西:valueFromParent[9]你是指字典作为模型的容器吗?我不知道我的答案是否正确。我不熟悉编码;)我的意思是-根本没有模型。只有一个ForEach列表,带有定义行的ChildView。在这一行中有一个可点击的星星,它会改变一个值:是否喜欢。对或错。但我想访问ParentView中的每一行并检查:第3行是否最受欢迎?并根据您建议使用ObservableObject的类似问题中的值:text(项[3]。valueFromParent?“开”:“关”),在列表外显示不同的文本。我想让事情变得更简单(如果可能的话),并在ForEach中使用@Binding。我只是在两个视图之间传递值。谢谢,您的第二个示例几乎就是我想要实现的。但是@State-var模型能更简单吗?就像一个空数组。或1元素数组。因为里面有4件东西。如果我将ForEach(1…4)更改为ForEach(1…40),会发生什么?