SwiftUI如何调用函数为LazyVGrid填充视图内容
你需要借助SwiftUI的@ViewBuilder结果构建器能力实现,不需要返回数组,正确的row函数写法如下:
@ViewBuilder func row(text: String) -> some View { Text(text) Text(text) }
原理解释
- Swift默认的函数只能返回单个返回值,加上
@ViewBuilder修饰符后,函数就可以遵循ViewBuilder的结果构建规则,自动将多个View元素打包为符合要求的隐式返回类型 - LazyVGrid的内容闭包本身就是被
@ViewBuilder修饰的,所以调用这个返回多View的函数完全符合其入参要求,渲染效果和你直接将两个Text写在LazyVGrid闭包中完全一致
如果你的行逻辑需要加入条件判断、循环等控制流,在@ViewBuilder修饰的函数中可以直接使用普通Swift控制流语法,不需要手动处理类型兼容问题。
内容的提问来源于stack exchange,提问作者drekka
相关产品推荐
相关产品推荐

