Search code examples
objective-cmacoscocoastoryboard

Mac App Storyboard - Access Document in NSViewController


I am currently fighting with NSDocument in a document based Storyboard based Cocoa Application (Objective C). Can anybody tell me how i can access the document in the NSViewController subclass?

I've tried to access it the following way - but the document is null:

[self.view.window.windowController document];

Thanks for your help!

Best regards Martin


Solution

  • I was just wrestling with this myself. I started with the standard Yosemite template and was trying to use [self.view.window.windowController document] in -viewDidLoad. At that point, self.view.window is nil, so there's no way to get to the document.

    The trick is to wait until -viewWillAppear. By the time it is called, self.view.window is populated and the document is available.

    Sequence: -makeWindowControllers invokes -self addWindowController: with the storyboard's -instantiateControllerWithIdentifier: result. -addWindowController: triggers a call to the VC's -viewDidLoad before returning. Then, finally, -viewWillAppear is called (and the document is available).