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:使用条件布局在画布中显示预览的主要内容,如果未能解决你的问题,请参考以下文章
Swift UI 实时预览画布不适用于 macOS Catalina 和 Xcode 11.0