【发布时间】:2019-09-28 14:07:11
【问题描述】:
我正在尝试在操场上使用 SwiftUI 的 @State。这是我的代码:
import UIKit
import PlaygroundSupport
import SwiftUI
struct ContentView: View {
@State private var showGreeting = false
var body: some View {
Form {
Button(action: {
self.showGreeting.toggle()
}) {
Text("Toggle Greeting")
}
if showGreeting {
Text("Hello World!")
}
}
}
}
let viewController = UIHostingController(rootView: ContentView())
PlaygroundPage.current.liveView = viewController
我可以在实时取景中看到按钮。但是,如果我单击它,它不会显示文本。第二次单击确实会显示文本。进一步的点击似乎在视觉上没有任何区别。
每次点击时,我都会在日志区域收到以下消息:
=== AttributeGraph: cycle detected through attribute 38 ===
需要一些帮助来理解这在这种情况下意味着什么以及为什么状态不自然地表现。
注意:我运行的是 macOS Mojave,所以我没有 SwiftUI 预览选项。我正在使用 Playground 的实时预览。
【问题讨论】:
-
适用于 Xcode 12 / iOS 14