Canvas渲染View,Console提供正确的输出,但应用程序中的View保持为空



在MacOS上,我有一个非常简单的ContentView:

struct ContentView: View {

@ObservedObject var environment: Environment

var body: some View {

if let glyph = environment.glyph {
print ("Content View (glyph)")
return AnyView {
GlyphView(glyph: glyph)
}
} else {
return AnyView {
Text("no glyph")
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var environment = Environment()
static var previews: some View {
ContentView(environment: environment)
}
}

当我运行应用程序时,控制台给出:

2020-10-14 21:50:42.065365+0200 ShapeSearch[94679:5992139] Metal API Validation Enabled
2020-10-14 21:50:42.093298+0200 ShapeSearch[94679:5992191] flock failed to lock maps file: errno = 35
2020-10-14 21:50:42.093688+0200 ShapeSearch[94679:5992191] flock failed to lock maps file: errno = 35
Content View Glyph "k" - 6 contours

并且ContentView保持为空,没有GlyphView,没有Text

但当我调试GlyphView时,我可以在画布上看到非常好的渲染字形:

struct GlyphView_Previews: PreviewProvider {

static var glyph = Environment().glyph!
static var previews: some View {
GlyphView(glyph: glyph)
}
}

CCD_ 6在两种情况下都取自同一来源。我确信。

编辑:

这种工作方式:

struct ContentView: View {

@ObservedObject var environment: Environment

var body: some View {
GlyphView(glyph: environment.glyph!)
}
}

错误可能在哪里?

目前尚不清楚您使用的是哪个SwiftUI版本,但以下内容在任何情况下都应该适用于

var body: some View {
Group {  
if nil != environment.glyph {
GlyphView(glyph: environment.glyph!)
} else {
Text("no glyph")
}
}
}

相关内容

最新更新