de.*_*de. 18 ios swift swiftui xcode15
如果我想为包含 @Binding 的 SwiftUI 视图创建预览,我之前会编写如下内容:
struct SpecialButton_Preview: PreviewProvider {
static var previews: some View {
@State var value: Bool = true
SpecialButton(isOn: $value)
}
}
Run Code Online (Sandbox Code Playgroud)
然而,Xcode 15 现在配备了新语法(#Preview),但当我尝试添加示例状态属性时,它不起作用:
#Preview { // Error: Ambiguous use of 'Preview(_:traits:body:)'
@State var value: Bool = true
SpecialButton(isOn: $value)
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
Mik*_*ron 27
您需要返回视图才能预览。我不太确定这是如何工作的,它与 Swift 宏的工作方式有关。
#Preview {
@State var value: Bool = true
return SpecialButton(isOn: $value)
}
Run Code Online (Sandbox Code Playgroud)
来自 WWDC Slack:“新#Previews宏只需要一个返回要预览的内容的闭包。因此您可以在其中声明局部变量或进行其他必要的设置,就像在任何其他闭包中一样。”
编辑:这仅在您不想更新状态时才有效,否则您必须按照de.
de.*_*de. 21
这就是我为了获得可变值而最终所做的事情:
#Preview {
struct PreviewWrapper: View {
@State var value: Bool = true
var body: some View {
SpecialButton(isOn: $value)
}
}
return PreviewWrapper()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9643 次 |
| 最近记录: |