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