I meant, the original behavior you asked about was caused by using a local variable, but you solved that by using an instance variable instead. Then you had a different problem, which was nothing to do with the instance variable. I was just emphasizing that this was a different problem, but perhaps I didn't need to.
The next step is to describe the exact behavior when it "goes strange" the second or subsequent times. Am I correct that you're instantiating the storyboard in an action method in AppDelegate, such as when a button is clicked or a menu item chosen?
>> presentation is set to multiple
In that case, unless I'm missing something, a single instance variable isn't going to be enough to hold references to all of the windows you instantiate. You might need an array of window controller references, in which case you'll need code to remove references when the corresponding window is closed, which will involve the window controller "willClose" method, and it starts to make more sense to move all of the management behavior into the window controller [sub-]class.