SwiftUI:使用条件布局在画布中显示预览

Posted

技术标签:

【中文标题】SwiftUI:使用条件布局在画布中显示预览【英文标题】:SwiftUI : Display preview in canvas with conditional layout 【发布时间】:2020-05-02 07:12:08 【问题描述】:

我正在构建一个带有一些条件控件的布局,具体取决于用户偏好。 例如,我仅在用户选择查看时才显示 Picker(分段)(用户在应用程序设置页面上的 UserDefaults 中将 Bool 设置为 true)。

我尝试在我的预览结构中将该 Bool 设置为 var 或常量,并且我设法让我的 Picker 显示在画布中,但我收到一个错误:“Argument passed to call that takes no arguments”:

这是我声明我的 Bool 的方式:

private var isBiqualif: Bool = UserDefaults.standard.bool(forKey: kbiQualif) // kbiQualif is constant string set in a separate file to avoid typos

这是我显示我的选择器的方式:

if isBiqualif  // User has activated this in settings
                Picker("", selection: $typeSelectorIndex) 
                        ForEach(0 ..< types.count)  index in
                            Text(self.types[index]).tag(index)
                          
               
                .pickerStyle(SegmentedPickerStyle())
                    Divider()

                 //  End of if statement for dual rating Picker

还有我最近的预览尝试:

struct CreateTakeoffView_Previews: PreviewProvider 
    static var previews: some View 

     let myBool = true
        return CreateTakeoffView(isBiqualif: myBool)
    

有什么想法吗?

谢谢

【问题讨论】:

【参考方案1】:

不要让它private,这样你就隐藏了var,所以改为使用

var isBiqualif: Bool = UserDefaults.standard.bool(forKey: kbiQualif)

【讨论】:

伙计,就这么简单!谢谢,我又学到了一些关于 var 作用域的东西......

以上是关于SwiftUI:使用条件布局在画布中显示预览的主要内容,如果未能解决你的问题,请参考以下文章

Xcode SwiftUI 如何滚动预览画布?

SwiftUI 画布运行显示上一个项目的结果

如何与代码并排打开 SwiftUI 预览? [复制]

Swift UI 实时预览画布不适用于 macOS Catalina 和 Xcode 11.0

无法看到 swiftui 的预览窗口和显示我的 mac 的模拟器

SwiftUI之深入解析如何创建和组合视图