SwiftUI 你必须知道的10个子视图的限制Argument passed to call that takes no arguments

先来看看下面的代码

1、正常的代码,可以运行

struct ContentView: View {
    
    var body: some View {
        
            Group {
                Text("1")
                Text("2 ")
                Text("3 ")
                Text("4 ")
                Text("5 ")
                Text("6 ")
                Text("7 ")
                Text("8 ")
                Text("9 ")
                Text("10 ")
                //Text("11 ")
            }
    
    }
}

2、会提示编译错误的代码

struct ContentView: View {
    
    var body: some View {
        
            Group {
                Text("1")
                Text("2 ")
                Text("3 ")
                Text("4 ")
                Text("5 ")
                Text("6 ")
                Text("7 ")
                Text("8 ")
                Text("9 ")
                Text("10 ")
                Text("11 ")
            }
    
    }
}

build时会出现下面的错误

Argument passed to call that takes no arguments

真正的原因

xcode的提示实在是太莫名其妙了,我通过查看文档才发现。SwiftUI 的container是有数量限制,具体限制多少呢。文档里面没有写明(也可能是我们没有找到),但是文档下面的buildblock没有超过10的

有图有真相

后来我又google一下,果然有这个限制。

受影响的其他容器

下面的容器都是有10个对象的限制

  • VStack
  • HStack
  • ZStack
  • Group
  • List
  • 未来的容器

为什么有这个限制

我认为应该是apple不希望我们创建过于复杂的单页视图,希望我们尽快进行模块划分。

参考资料

推荐

基础文章推荐

经典教程推荐

技术源码推荐

推荐文章

CoreData篇

Combine篇

TextField篇

JSON文件篇


一篇文章系列

技术交流

QQ:3365059189
SwiftUI技术交流QQ群:518696470

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容