打破SwiftUI中List的最大容量
Break the maximum capacity of the List in SwiftUI
我在一个列表中添加了 10 个 HStack。当我添加第 11 个 HStack 时,Xcode 显示错误。
This page教我用Group突破10children的限制。但这对我不起作用。如何在列表中添加第 11 个 HStack?
作品:
List {
Text("內部培訓問卷調查")
HStack {
Text("姓")
TextField("陳", text: self.$name)
}
...
HStack {
Text("電話號碼")
TextField("首先選擇國家/地區", text: self.$name)
}
}
不工作:
List {
Text("內部培訓問卷調查")
HStack {
Text("姓")
TextField("陳", text: self.$name)
}
...
HStack {
Text("電話號碼")
TextField("首先選擇國家/地區", text: self.$name)
}
HStack { //The extra HStack
Text("電話號碼2")
TextField("首先選擇國家/地區", text: self.$name)
}
}
出现这些错误消息:
<unknown>:0: error: ambiguous reference to member 'buildBlock()'
SwiftUI.ViewBuilder:3:24: note: found this candidate
public static func buildBlock() -> EmptyView
^
SwiftUI.ViewBuilder:4:24: note: found this candidate
public static func buildBlock<Content>(_ content: Content) -> Content where Content : View
^
SwiftUI.ViewBuilder:3:24: note: found this candidate
public static func buildBlock<C0, C1>(_ c0: C0, _ c1: C1) -> TupleView<(C0, C1)> where C0 : View, C1 : View
^
如果使用组,应用程序可以编译但文本重叠(列表不符合预期;请查看下图):
List {
Group {
Text("內部培訓問卷調查")
HStack {
Text("姓")
TextField("陳", text: self.$name)
}
...
HStack {
Text("電話號碼")
TextField("首先選擇國家/地區", text: self.$name)
}
}
Group {
HStack {
Text("電話號碼2")
TextField("首先選擇國家/地區", text: self.$name)
}
}
}
在这里,您的解决方案:
Group
HStack
。
List {
Text("內部培訓問卷調查")
HStack { //1
Text("姓")
TextField("陳", text: self.$name)
}
HStack { //2
Text("電話號碼")
TextField("首先選擇國家/地區", text: self.$name)
}
HStack { //3
Text("電話號碼2")
TextField("首先選擇國家/地區", text: self.$name)
}
HStack { //4
Text("電話號碼3")
TextField("首先選擇國家/地區", text: self.$name)
}
HStack { //5
Text("電話號碼4")
TextField("首先選擇國家/地區", text: self.$name)
}
//Make Group Here
Group {
HStack { //6
Text("電話號碼5")
TextField("首先選擇國家/地區", text: self.$name)
}
HStack { //7
Text("電話號碼6")
TextField("首先選擇國家/地區", text: self.$name)
}
HStack { //8
Text("電話號碼7")
TextField("首先選擇國家/地區", text: self.$name)
}
HStack { //9
Text("電話號碼8")
TextField("首先選擇國家/地區", text: self.$name)
}
HStack { //10
Text("電話號碼9")
TextField("首先選擇國家/地區", text: self.$name)
}
HStack { //11
Text("電話號碼10")
TextField("首先選擇國家/地區", text: self.$name)
}
}
}.padding()
但正如@kontiki 所说,
您正在重复一个模式。
所以,做一个数组。并使用 ForEach
.
我在一个列表中添加了 10 个 HStack。当我添加第 11 个 HStack 时,Xcode 显示错误。
This page教我用Group突破10children的限制。但这对我不起作用。如何在列表中添加第 11 个 HStack?
作品:
List {
Text("內部培訓問卷調查")
HStack {
Text("姓")
TextField("陳", text: self.$name)
}
...
HStack {
Text("電話號碼")
TextField("首先選擇國家/地區", text: self.$name)
}
}
不工作:
List {
Text("內部培訓問卷調查")
HStack {
Text("姓")
TextField("陳", text: self.$name)
}
...
HStack {
Text("電話號碼")
TextField("首先選擇國家/地區", text: self.$name)
}
HStack { //The extra HStack
Text("電話號碼2")
TextField("首先選擇國家/地區", text: self.$name)
}
}
出现这些错误消息:
<unknown>:0: error: ambiguous reference to member 'buildBlock()'
SwiftUI.ViewBuilder:3:24: note: found this candidate
public static func buildBlock() -> EmptyView
^
SwiftUI.ViewBuilder:4:24: note: found this candidate
public static func buildBlock<Content>(_ content: Content) -> Content where Content : View
^
SwiftUI.ViewBuilder:3:24: note: found this candidate
public static func buildBlock<C0, C1>(_ c0: C0, _ c1: C1) -> TupleView<(C0, C1)> where C0 : View, C1 : View
^
如果使用组,应用程序可以编译但文本重叠(列表不符合预期;请查看下图):
List {
Group {
Text("內部培訓問卷調查")
HStack {
Text("姓")
TextField("陳", text: self.$name)
}
...
HStack {
Text("電話號碼")
TextField("首先選擇國家/地區", text: self.$name)
}
}
Group {
HStack {
Text("電話號碼2")
TextField("首先選擇國家/地區", text: self.$name)
}
}
}
在这里,您的解决方案:
Group
HStack
。
List {
Text("內部培訓問卷調查")
HStack { //1
Text("姓")
TextField("陳", text: self.$name)
}
HStack { //2
Text("電話號碼")
TextField("首先選擇國家/地區", text: self.$name)
}
HStack { //3
Text("電話號碼2")
TextField("首先選擇國家/地區", text: self.$name)
}
HStack { //4
Text("電話號碼3")
TextField("首先選擇國家/地區", text: self.$name)
}
HStack { //5
Text("電話號碼4")
TextField("首先選擇國家/地區", text: self.$name)
}
//Make Group Here
Group {
HStack { //6
Text("電話號碼5")
TextField("首先選擇國家/地區", text: self.$name)
}
HStack { //7
Text("電話號碼6")
TextField("首先選擇國家/地區", text: self.$name)
}
HStack { //8
Text("電話號碼7")
TextField("首先選擇國家/地區", text: self.$name)
}
HStack { //9
Text("電話號碼8")
TextField("首先選擇國家/地區", text: self.$name)
}
HStack { //10
Text("電話號碼9")
TextField("首先選擇國家/地區", text: self.$name)
}
HStack { //11
Text("電話號碼10")
TextField("首先選擇國家/地區", text: self.$name)
}
}
}.padding()
但正如@kontiki 所说,
您正在重复一个模式。
所以,做一个数组。并使用 ForEach
.