代码之家  ›  专栏  ›  技术社区  ›  XYZ

应该在哪里使用循环来为SwiftUI预览生成虚拟数据?

  •  0
  • XYZ  · 技术社区  · 6 年前

    preview 是一个静态函数,它使得在内部使用实例变量变得不可能。

    一种方法是像下面的代码那样手动创建数据,它可以工作,但是如果需要1000行,它就不能伸缩。

    static var data = [
        Item(id: UUID())
    ]
    

    问题是,在 for

    struct MyListView: View {
        let items: [Item]
        
        var body: some View {
            List(items) { item in
                item.id
            }
        }
    }
    
    struct MyListView_Previews: PreviewProvider {
        // Works but not every elegant :(
        static var dummyItems = [
            Item(id: UUID())
        ]
    
        static var previews: some View {
            MyListView(items: dummyItems)
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   vacawama    6 年前

    可以使用立即调用以初始化静态变量的闭包为预览创建项:

    struct MyListView_Previews: PreviewProvider {
        static var items: [Item] = {
            var items = [Item]()
            for _ in 1...5 {
                items.append(Item(id: UUID()))
            }
            return items
        }()
        
        static var previews: some View {
            MyListView(items: items)
        }
    }