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的

  • https://developer.apple.com/documentation/swiftui/viewbuilder
有图有真相

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

受影响的其他容器

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

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

为什么有这个限制

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

参考资料

  • https://swiftwithmajid.com/2019/10/30/view-composition-in-swiftui/

推荐

基础文章推荐

  • 《SwiftUI是什么,听听大牛们如何说》

经典教程推荐

  • onevcat 大神的《SwiftUI 与 Combine 编程》
  • 更新近百篇SwiftUI教程《SwiftUI2020教程》
  • 帮您突破数据存储难关《SwiftUI vs CoreData数据存储解决方案》

技术源码推荐

推荐文章

CoreData篇

  • SwiftUI数据存储之做个笔记App 新增与查询(CoreData)
  • SwiftUI进阶之存储用户状态实现登录与登出
  • SwiftUI 数据之List显示Sqlite数据库内容(2020年教程)

Combine篇

  • 一篇文章学懂弄通SwiftUI与Combine(含轮播动画App源码)

TextField篇

  • 《SwiftUI 一篇文章全面掌握TextField文本框 (教程和全部源码)》
  • 《SwiftUI实战之TextField风格自定义与formatters》
  • 《SwiftUI实战之TextField如何给键盘增加个返回按钮(隐藏键盘)》
  • 《SwiftUI 当键盘出现时避免TextField被遮挡自动向上移动》
  • 《SwiftUI实战之TextField如何给键盘增加个返回按钮(隐藏键盘)》

JSON文件篇

  • SwiftUI JSON文件下载、存储、解析和展示(代码大全)

一篇文章系列

  • SwiftUI一篇文章全面掌握List(教程和源码)
  • 《SwiftUI 一篇文章全面掌握TextField文本框 (教程和全部源码)》
  • SwiftUI一篇文章全面掌握Picker,解决数据选择(教程和源码)
  • SwiftUI一篇文章全面掌握Form(教程和源码)
  • SwiftUI Color 颜色一篇文章全解决

技术交流

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

  • 请关注我的专栏icloudend, SwiftUI教程与源码
    https://www.jianshu.com/c/7b3e3b671970

你可能感兴趣的:(SwiftUI 你必须知道的10个子视图的限制Argument passed to call that takes no arguments)