如果ForEach循环嵌套,SwiftUI-LazyHStack/LazyVStack是否仍然有效?

如果ForEach循环嵌套,SwiftUI-LazyHStack/LazyVStack是否仍然有效?,swift,swiftui,Swift,Swiftui,这是我的密码 LazyHStack(间距:间距){ InnerView(data:self.data)//for循环包含在InnerView中 } LazyHStack(间距:间距){ ForEach(数据,id:\.self){viewDataMap in buildView(viewDataMap:viewDataMap) } } “懒散”对两个代码段都有效吗?是的,它应该像您预期的那样有效。只有当您的项目超过屏幕显示的项目数时,Lazy属性才会生效。如果视图中的项目数量适合屏幕,那么使用

这是我的密码

LazyHStack(间距:间距){
InnerView(data:self.data)//for循环包含在InnerView中
}
LazyHStack(间距:间距){
ForEach(数据,id:\.self){viewDataMap in
buildView(viewDataMap:viewDataMap)
}
}

“懒散”对两个代码段都有效吗?

是的,它应该像您预期的那样有效。只有当您的项目超过屏幕显示的项目数时,Lazy属性才会生效。如果视图中的项目数量适合屏幕,那么使用惰性堆栈就没有意义。

它可以工作,但预览会在Xcode 12.4(12D4e)上崩溃

向反馈助理汇报

FB9121009(如果LazyVStack包含两个嵌套的ForEach where数据,则预览崩溃。元素:可识别)

<代码>导入基础 导入快捷键 结构NestedForEachLazyvstack:视图{
var items1=(0..问题在哪里?没有问题。我在问它是否仍然懒惰。我很想知道它是如何工作的。根据我在这里发现的情况,我可以继续在应用程序上构建更多内容。但我不想在它变得更复杂时遇到意外问题。
import Foundation
import SwiftUI

struct NestedForEachInLazyVStack: View {

    var items1 = (0..<3).map { _ in Item() }
    var items2 = (0..<3).map { _ in Item() }

    @ViewBuilder
    var body: some View {
        if #available(iOS 14.0, *) {
            LazyVStack {
                ForEach(items1) { _ in
                    ForEach(items2) { _ in
                        Text("text")
                    }
                }
            }
        }
    }
}

struct Item: Identifiable {
    var id = UUID()
}

struct NestedForEachInLazyVStack_Previews: PreviewProvider {
    static var previews: some View {
        NestedForEachInLazyVStack()
    }
}