我试图制作一个自定义列表。如果我们在 scrollView 中添加 Encapsulated VStack 并尝试从该 VStack 添加新行,它的行为就会很奇怪。但是我们必须封装,因为在 Xcode 中会给出“复杂视图编译器错误”。我提供了完整的代码以便更好地理解。请尝试运行它。新元素没有按预期添加,它推动一切向上。
struct RowView: View {
var body: some View {
VStack{
HStack{
Spacer()
.foregroundColor(Color.black)
Spacer()
}
}
.background(Color.white)
.cornerRadius(13)
.padding()
}}
struct cView:View {
@State var array: [String] = []
@State var height: CGFloat = 60
var body: some View {
VStack{
Button(action: {
self.array.append("Test")
}, label: {
Text("Add")
})
VStack{
ForEach(array, id: \.self){_ in
RowView()
}
}
.background(Color.red)
.cornerRadius(13)
.padding()
}
}}
struct ContentView : View {
@State var array: [String] = []
var body: some View {
ScrollView{
VStack{
Text("d")
.frame(height: 90)
VStack{
cView()
}
}
}
.navigationBarTitle("Test", displayMode: .automatic)
}}