我正在使用SwiftUI(Swift 5.1,XCode 11.2(11B52),MacOS Catalina 10.15.1)创建一个应用程序。 在视图上添加组件时,有时会出现错误。 为了确定原因,我简化了代码,例如:
import SwiftUI
struct MainView: View {
var body: some View {
VStack {
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
}
}
}
struct MainView_Previews: PreviewProvider {
static var previews: some View {
MainView()
}
}
然后,我在第一个HStack上遇到了一个错误,说“传递给调用的参数不带参数。”
如果我注释掉11个“ HStack”之一,则错误消失了。
我想知道发生了什么事。 谢谢
答案 0 :(得分:1)
您需要使用Group { ... }
。
SwiftUI的每个视图最多只能包含十个项目。您可以使用Group
来解决此问题,因此,如果您需要更多物品。您将它们分组在一起。由于10个项目的限制,每个视图只能有10个组,但是也可以将它们包含在Group
中。尽管如果要加入精英团队,最好重构代码并以不同的方式编写代码,或者使用ForEach
或使代码更加组件化。
struct MainView: View {
var body: some View {
VStack {
Group {
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
HStack {
Text("Okay")
}
}
HStack {
Text("Okay")
}
}
}
}
HackingwithSwift的精彩文章解释了原因。您可以看到它here
这是因为SwiftUI的视图构建系统具有各种代码,旨在让我们添加1个视图,2个视图,3个视图或4、5、6、7、8、9和10个视图,但不能添加11个或更多–那是行不通的。