程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了SwiftUi Nested ForEach 导致相同视图的意外呈现大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决SwiftUi nested ForEach 导致相同视图的意外呈现?

开发过程中遇到SwiftUi nested ForEach 导致相同视图的意外呈现的问题如何解决?下面主要结合日常开发的经验,给出你关于SwiftUi nested ForEach 导致相同视图的意外呈现的解决方法建议,希望对你解决SwiftUi nested ForEach 导致相同视图的意外呈现有所启发或帮助;

我正在尝试按照此 SwiftUi GridView iOS 13 教程在 SwiftUi 中构建一个 GrIDVIEw@H_607_4@。

我以嵌套方式使用两个 ForEach()@H_607_4@,一个用于显示行,另一个用于显示 GrIDVIEw@H_607_4@ 的各个单元格。

我的问题是嵌套 ForEach()@H_607_4@ 的调用次数超出预期。然这会创建一个准确的 GrIDVIEw@H_607_4@,但需要很多时间(6-8 秒)。 我也在 GrIDVIEw@H_607_4@ 中使用了这个 TabVIEw@H_607_4@,所以当我在 TabVIEw@H_607_4@ 的页面之间滑动时,页面之间有明显的延迟(每个页面包含一个 GrIDVIEw 和元素数量在网格中有所不同)。

这是用于创建 ForEach@H_607_4@ 的嵌套 GrIDVIEw@H_607_4@ 语句的代码。

private let columns: Int
private var List: [[T]] = []
private let content: (T) -> Content

    init(columns: Int,List: [T],@viewbuilder content:@escaPing (T) -> Content) {
        self.columns = columns
        self.content = content
        self.setupList(List)
    }
    
    private mutaTing func setupList(_ List: [T]) {
        var column = 0
        var columnIndex = 0
        
        for object in List {
            if columnIndex < self.columns {
                if columnIndex == 0 {
                    self.List.insert([object],at: column)
                    columnIndex += 1
                }else {
                    self.List[column].append(object)
                    columnIndex += 1
                }
            }else {
                column += 1
                self.List.insert([object],at: column)
                columnIndex = 1
            }
        }
    }

var body: some VIEw {
    vstack {
        ForEach(0 ..< self.List.count,ID: \.self) { i  in
           Group{
             HStack {
                ForEach(self.List[i],ID: \.self) { object in
                    self.content(object)
                      .frame(wIDth: UIScreen.main.bounds.size.wIDth/CGfloat(self.columns))
                }
             }
           }
        }
        
    }
}
@H_607_4@

对于 3 行 3 列的 9 个元素的网格,第二个 ForEach@H_607_4@ 中的语句在每行中被调用 9 次,而每行只应调用 3 次。

我在这里尝试了建议的答案 nested ForEach (and List) in Views give unexpected results(用一个组将视图封闭在外部 ForEach 中),但是错误仍然存​​在。

根据 nested ForEach caused unexpected ordering 的建议,我还尝试为 ID@H_607_4@ 设置唯一的 ForEach@H_607_4@,但我仍然无法解决。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的SwiftUi Nested ForEach 导致相同视图的意外呈现全部内容,希望文章能够帮你解决SwiftUi Nested ForEach 导致相同视图的意外呈现所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: