如果我想要为包含@Binding的SwiftUI视图创建预览,我以前会写下这样的代码:

struct SpecialButton_Preview: PreviewProvider {
    static var previews: some View {
        @State var value: Bool = true
        SpecialButton(isOn: $value)
    }
}

然而,Xcode15现在提供了一个新的语法(#Pview),但是当我try 添加我的示例状态属性时,它不起作用:

#Preview {  // Error: Ambiguous use of 'Preview(_:traits:body:)'
    @State var value: Bool = true
    SpecialButton(isOn: $value)
}

我怎么才能让这件事奏效呢?

推荐答案

您需要返回该视图以进行预览.我不太确定这是如何工作的,这与SWIFT宏的工作方式有关.

#Preview {
    @State var value: Bool = true
    return SpecialButton(isOn: $value)
}

来自WWDC Slack: "新的#Previews宏只接受一个闭包,返回要预览的对象.因此,您可以在其中声明局部变量或进行其他必要的设置,就像在任何其他闭包中一样."

Ios相关问答推荐

如何在PINCH上添加UITextfield以zoom 图像

滚动时突出显示工具栏项目

TrueDepth摄像机像素距离不准确

Swift导航远离视频导致崩溃

在嵌套的DISPATCH_AFTER块中正确使用strong自/弱自

iOS应用程序冻结在UICollectionView代码,但我没有';没有任何UICollectionViews

如何在 Flutter 应用程序中测试来自 App/Play Store 的移动深层链接?

使用 Xamarin 将 dext Bundle 到 iOS .ipa 中

如何将 AppIntent 添加到应用程序目标并在交互式小部件中使用它

NSError 错误领域: "CBATTErrorDomain" 代码: 128 0x0000000282b111a0

Swift:判断 Foundation (NS)Errors 与自定义协议的一致性

长按 SwiftUI 更改项目的顺序

具有线性渐变的 SVG textPath 在 Safari 中损坏

Text() 正在添加额外的前导尾随填充 SwiftUI

SwiftUI 文本字段代理绑定代码忽略空格不起作用?

如何为视图的 colored颜色 和宽度设置动画?

'+entityForName: nil 不是合法的 NSManagedObjectContext 参数 - 核心数据

针对 Xcode 中的 iPad 选项

在 iOS 8.1 模拟器上更改语言不起作用

在 Objective-C 中将所有文本转换为小写