Swiftui 为什么在AppDelegate中更新@State不起作用?
我试图打印Swiftui 为什么在AppDelegate中更新@State不起作用?,swiftui,Swiftui,我试图打印isFocused值,它总是true,即使在isFocused=false语句之后。@State是否仅在SwiftUI视图中工作?文档: ///实例化持久状态的链接视图属性 ///类型为“value”的值,允许视图读取和更新其 ///价值观。 @可用(iOS 13.0、OSX 10.15、tvOS 13.0、watchOS 6.0、*) @冻结@PropertyRapper公共结构状态:DynamicProperty{ 所以,State是用于SwiftUIView,但是AppDele
isFocused
值,它总是true
,即使在isFocused=false
语句之后。@State
是否仅在SwiftUI
视图中工作?文档:
///实例化持久状态的链接视图属性
///类型为“value”的值,允许视图读取和更新其
///价值观。
@可用(iOS 13.0、OSX 10.15、tvOS 13.0、watchOS 6.0、*)
@冻结@PropertyRapper公共结构状态:DynamicProperty{
所以,
State
是用于SwiftUIView
,但是AppDelegate
是一个非View
我明白了!那么使用Combine是另一种解决方案。~这也是无法分配false
值的原因吗?~经过测试,是的,这就是原因。
import Cocoa
import SwiftUI
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@State var isFocused: Bool = true
var window: NSWindow!
// Some window setup code here
func applicationDidBecomeActive(_ notification: Notification) {
isFocused = true
}
func applicationDidResignActive(_ notification: Notification) {
isFocused = false
}
}
/// A linked View property that instantiates a persistent state
/// value of type `Value`, allowing the view to read and update its
/// value.
@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
@frozen @propertyWrapper public struct State<Value> : DynamicProperty {