在SwiftUI中填充列表
通过在线教程学习Swift和自学的初学者。所以我创建列表视图,列表视图的数据(数组)保存在一个单独的Swift文件中 在下面的代码中,从数组导入数据,并使用列表语法和闭包填充列表。我的问题是Swift CLOSE如何帮助填充这些数据,一步一步的解释可能会有所帮助。随着课程的深入,我面临着一个理解上的挑战在SwiftUI中填充列表,swift,swiftui,swiftui-list,Swift,Swiftui,Swiftui List,通过在线教程学习Swift和自学的初学者。所以我创建列表视图,列表视图的数据(数组)保存在一个单独的Swift文件中 在下面的代码中,从数组导入数据,并使用列表语法和闭包填充列表。我的问题是Swift CLOSE如何帮助填充这些数据,一步一步的解释可能会有所帮助。随着课程的深入,我面临着一个理解上的挑战 import SwiftUI struct ContentView: View { let hikes = Hike.all() //all the data kept in se
import SwiftUI
struct ContentView: View {
let hikes = Hike.all() //all the data kept in separate Swift file
var body: some View {
List(self.hikes, id: \.name) { hike in //how does closure help here?
Text(hike.name)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
这是一个相当抽象的解释 什么是
列表
?
列表
是一个可以表示您的模型列表的视图(在本例中,self.hikes
。但是我没有看到在任何地方声明这个,您是指self.imgs
?)。每个模型都表示为列表的“子视图”
什么是结束?
闭包实际上只是一个函数。它可以接受任意数量的参数,还可以选择返回一个值
那么为什么在这里使用闭包呢?
列表
实际上不知道如何将每个模型表示为视图
,因此它需要询问您。它通过一个闭包来实现这一点,闭包将您的一个模型作为参数,并返回一个视图
。这样,每当列表
想要问“我应该如何表示此模型?”的问题时,它就可以调用闭包,并将得到一个视图
在您的例子中,您说过要表示您的一个模型hike
,列表
应该使用文本
视图和字符串hike.name
换句话说,这里传递的闭包表示模型和显示模型的视图之间的映射
注意:这里使用的闭包实际上是一种特殊类型的闭包,称为函数生成器。如果您感兴趣,请阅读更多
根据您的评论:
在打印所有值之前,变量是否像“For in”循环一样循环
嗯,它不一定像for-in循环那样工作。这实际上取决于List
的实现。“何时调用闭包?”的答案是“当列表
需要一个视图时”。对数组中用作列表第一个参数的每个元素调用闭包一次,这与映射
,过滤
等函数类似(如果有帮助的话)。我不知道你希望得到什么样的解释。谢谢。变量是否会像“For in”循环一样循环,直到所有的值都打印出来?这是一个非常清楚的解释。非常感谢你。