• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
How to implement NSWindowRestoration protocol in Swift
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

How to implement NSWindowRestoration protocol in Swift


  • Subject: How to implement NSWindowRestoration protocol in Swift
  • From: Bill Cheeseman <email@hidden>
  • Date: Thu, 03 Mar 2016 08:27:14 -0500

In my OS X single-window application (not document-based), written using storyboards in Swift 2, I implement the NSWindowRestoration protocol's static function restoreWindowWithIdentifier(_:state:completionHandler). I have reached the point where it is called when it is supposed to be called.

But now what do I do? I can't find any examples showing how to implement the body of this function in Swift.

At first, when I tried to translate Objective-C examples into Swift, any reference to the main window controller's 'window' property resulted in the compile-time error "Instance member 'window' cannot be used on type 'MainWindowController'". Now I realize that I have to create an instance of the restoration class first. So, this compiles and runs when I use MainWindowController as the restoration class:

    static func restoreWindowWithIdentifier(identifier: String, state: NSCoder, completionHandler: (NSWindow?, NSError?) -> Void) {
        let controller = MainWindowController()
        var restoreWindow: NSWindow? = nil
        if identifier == "MainWindow" {
            restoreWindow = controller.window
        }
        completionHandler(restoreWindow, nil);
    }

However, how do I fit this into the storyboard context? When I create an instance of MainWindowController here, I seem to be bypassing the segues in the storyboard. It occurs to me that maybe I should make AppDelegate the restoration class, instead of MainWindowController. The documentation is cryptic, even in the NSWindowRestoration.h header file comments. I'm thinking that then I could just restore the previously encoded underlying data model values and let the storyboard run by itself as usual. But it isn't clear to me what will become of the temporary window controller. Or, in other words, how do I find or create a valid window in this method, as the header file comments say I should?

 I'm having difficulty finding my way. All guidance appreciated.

--

Bill Cheeseman - email@hidden

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden


  • Follow-Ups:
    • Re: How to implement NSWindowRestoration protocol in Swift
      • From: Quincey Morris <email@hidden>
  • Prev by Date: Re: migrating from 32bit to 64 bit can not run project
  • Next by Date: Re: How to implement NSWindowRestoration protocol in Swift
  • Previous by thread: Re: migrating from 32bit to 64 bit can not run project
  • Next by thread: Re: How to implement NSWindowRestoration protocol in Swift
  • Index(es):
    • Date
    • Thread