I have an NSWindow which contains an NSImageView. This window gets activated everytime I click on a cell in my tableview. I only want 1 instance of the NSWindow to appear, but want to be able to change the contents of NSImageView.
How can I initialize NSWindow and display only 1 instance of it?
One possibility to do this is to create an NSWindowController subclass and an associated window XIB that gets loaded when the window controller is instantiated.
I’m sure you already have some controller class handling the mouse click in the NSTableView. In that class, simply keep around an instance of the NSWindowController subclass mentioned above as an instance variable. Whenever you need to display the window, tell that ivar to display its window.
If the window’s contents are dependent on the clicked table cell, simply add some methods to the window controller that modify its window’s contents and call these methods in your click-handling method before you display the window.
btw: I wouldn’t use a singleton here because in this case it would just be a workaround for bad design (just my opinion, not a hard fact).