2016-04-19 21 views
0

我在IB设置窗口的autosavename。在窗口的窗口控制器中,我正在执行以下操作 -如何将NSWindow位置保存为多屏?

override func windowDidLoad() { 
     super.windowDidLoad() 

     // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file. 
     self.window?.setFrameUsingName("TestWindowContollerAutoSaveName") 
    } 

这是尽可能简单。如果我在单个屏幕上使用它,它会很好地工作。但是,如果我使用多个屏幕,则始终在主屏幕上显示初始窗口位置。它不记得应用程序退出的屏幕。 我也曾尝试(没有运气) -

override func windowDidLoad() { 
     super.windowDidLoad() 

     // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file. 
     let frameString = self.window?.stringWithSavedFrame 
     if let _ = frameString{ 
      self.window?.setFrameFromString(frameString!) 
     } 
    } 

如何正确使用setFrameUsingName方法?谢谢你的帮助。

回答

0

这是因为所有UIView都嵌入在UIWindow中。每个UIView或屏幕都是UIWindow的子视图。你可以把UIWindow想象成一个UIView的父类。如果你只想编辑一个UIView,那么考虑使用那个UIView。

您可以阅读更多关于View and Window Architecture。他们在那里有一个有用的图表,这也将帮助你形象化我的解释。

+0

感谢您的回复。但我的查询与NSWindow和NSView不是UIWindow或UIView有关。 – Abhishek

+0

然后不确定。您可能想要更新您的问题以包含NSWindow和NSView。如果你的回答很清楚,你更有可能从别人那里获得帮助。 –