- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我想在 SwiftUI 中呈现项目列表,我可以这样做(使用 XCode 12):
struct MyView: View {
let texts: [String]
var body: some View {
ScrollView {
LazyVStack {
ForEach(texts.indices, id: \.self) { index in
MyRow(label: texts[index])
}
}
}
}
struct MyRow: View {
let label: String
var body: some View {
Text(label).font(.title3).padding()
}
}
}
不是结构体,
MyRow
可以是一个函数,这使得代码更加简洁和实用:
struct MyView: View {
let texts: [String]
var body: some View {
ScrollView {
LazyVStack {
ForEach(texts.indices, id: \.self) { index in
MyRow(label: texts[index])
}
}
}
}
@ViewBuilder func MyRow(label: String) -> some View {
Text(label).font(.title3).padding()
}
}
我想了解这两种方法之间的区别。
@State
带有函数的属性,这意味着您需要使用
struct
如果您的 View 需要状态,请使用方法。
最佳答案
@ViewBuilder
主要用于在不使用解析器的情况下有条件地呈现 View ,例如 AnyView(YourView)
.报价 Apple Developer's website :“此函数的客户端可以使用多语句闭包来提供多个 subview ”。例如,如果您想根据变量显示 View ,即如果某个变量为真则渲染 View1,如果它为假则渲染 View2。
关于SwiftUI:结构 View 与@ViewBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63815577/
我们可以给 @ViewBuilder 闭包参数一个默认值吗? 在做一些实验的时候出现了这个问题: import SwiftUI import PlaygroundSupport // MyView s
我们可以给 @ViewBuilder 闭包参数一个默认值吗? 在做一些实验的时候出现了这个问题: import SwiftUI import PlaygroundSupport // MyView s
当我将 displayMode 添加到 VStack 上的 .navigationBarTitle 时,出现编译错误:Generic parameter '无法推断 C0'。如果我删除 display
以下 View 是 List() 的第一行,用于替换隐藏的导航栏。 它的左侧有一个后退导航按钮,中间有一个居中的标题,右侧有一个可选按钮。 父 View 负责通过可选的@ViewBuilder 闭包实
我不能在 swift ui view 块中声明一个变量 var body: some View { let isHuman = false Text("Levels \(isHu
在 SwiftUI 中是否有可能有一个可选的 @ViewBuilder关闭?例如,假设我想开发一个自定义 View ,它需要两个 View 构建器闭包,如下所示: import SwiftUI str
如果我想在 SwiftUI 中呈现项目列表,我可以这样做(使用 XCode 12): struct MyView: View { let texts: [String] var bod
我有一个 View ,表示单元格中的一行,如下所示 这很有效,但三个水平元素(图像、标题/副标题、图像)被硬编码为它们各自的类型。 我想要一个通用的 ThreeItemView这需要 3 Views任
是否可以制作 UIViewRepresentable View 需要 ViewBuilder参数处理动态内容,例如 ForEach循环? 我有以下 UIViewRepresentable我用来下拉到
我试图了解如何在 @ViewBuilder 闭包中更改 @State 变量。以下只是一个简单的例子: struct ContentView: View { @State var width =
我正在尝试使用 SwiftUI 构建一个简单的 List。但是,我无法使用数据数组动态创建行。这是错误消息:Cannot convert value of type '(Setlist) -> Set
有什么区别: 属性上的@ViewBuilder struct SomeView: View { @ViewBuilder var content: () -> Content } 在init中
出于好奇,我将 View 类型作为参数传递给 @ViewBuilder。在 @ViewBuilder 中将模型/原始类型作为参数传递是完全有效的。 如下代码所示。 struct TestView: V
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *) extension ViewBuilder { public stat
SwiftUI 中的某些 View ,如 VStack 和 HStack 支持将多个 View 作为 subview ,如下所示: VStack { Text("hello") Text("w
⚠️ 2020 年 6 月 23 日编辑:从 Xcode 12 开始,ViewBuilder 将支持 switch 和 if let 语句! 我一直在尝试使用 SwiftUI 复制我的一个应用程序。它
我正在尝试创建一个简单的 struct接受一个 View 数组并返回一个普通的 VStack包含这些 View ,但它们都是对角堆叠的。 代码: struct LeaningTower: View {
我有一个自定义 View (DisclosableControl),它有条件地公开 UI 控件。 为了使其尽可能适应,初始化程序接受闭包,闭包生成 subview 以显示用户输入和控件的结果。由于这些
我已经研究了几天,搜索了 Swift 和 SwiftUI 文档、SO、论坛等,但似乎找不到答案。 这就是问题所在; 我有一个 SwiftUI 自定义 View ,它对远程资源的自定义 API 请求类进
我是一名优秀的程序员,十分优秀!