【发布时间】:2018-05-14 13:06:30
【问题描述】:
我想保存Check Box 的状态,退出应用程序,然后再次启动 macOS 应用程序以查看我的Check Box 的恢复状态。但是我的应用程序的 UI 中没有恢复状态。
我做错了什么?
import Cocoa
class ViewController: NSViewController {
@IBOutlet weak var tick: NSButton!
override func viewDidLoad() {
super.viewDidLoad()
}
override func encodeRestorableState(with coder: NSCoder) {
super.encodeRestorableState(with: coder)
coder.encode(tick.state, forKey: "")
}
override func restoreState(with coder: NSCoder) {
super.restoreState(with: coder)
if let state = coder.decodeObject(forKey: "") as? NSControl.StateValue {
tick.state = state
}
}
}
【问题讨论】:
-
这就是您编写的所有代码,因为启用和实现 UI 恢复还有很多。 UI 恢复的关键是 NSWindow;视图控制器不会自动包含在内。因此,您必须首先确保您的窗口正在恢复,然后该窗口必须负责保存和恢复它需要的任何属性/子视图/控制器。见UI Preservation
标签: macos cocoa swift4 restore savestate