从关联的NSViewController子类访问NSDocument子类的正确方法是什么,反之亦然?
我有以下代码执行前者,但是当视图加载或移动到窗口时它不起作用:
var document: Document {
return NSDocumentController.sharedDocumentController().documentForWindow(view.window!) as! Document
}
答案 0 :(得分:9)
可以通过此属性从视图控制器访问该文档(文档是 NSDocument 的子类):
var document: Document? {
return view.window?.windowController?.document as? Document
}
此属性将在 viewDidLoad 方法中返回 nil ,但会在 viewDidAppear 方法中返回文档。
可以通过此属性从文档访问视图控制器( ViewController 是 NSViewController 的子类):
var viewControllers: [ViewController] {
var result: [ViewController] = []
for windowController in windowControllers {
if let viewController = windowController.contentViewController as? ViewController {
result.append(viewController)
}
}
return result
}
如果您只在 makeWindowControllers 方法中创建一个窗口控制器:
var viewController: ViewController? {
return windowControllers[0].contentViewController as? ViewController
}