2016-04-19 18 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、またはそれを呼び出したときの 'screen'は、UIWindowのサブビューです。あなたはUIViewの親としてUIWindowを考えることができます。 1つのUIViewのみを編集する場合は、そのUIViewだけで作業することを検討してください。

View and Window Architectureについて詳しく読むことができます。彼らは私の説明を視覚化するのに役立つ有用な図をそこに持っています。

+0

お返事ありがとうございます。しかし、私のクエリはNSWindowやNSViewではなくUIWindowやUIViewに関連しています。 – Abhishek

+0

確かに。質問を更新して、NSWindowおよびNSViewという用語を含めることができます。あなたの答えがはっきりしていれば、他の人の助けを受ける可能性が高くなります。 –

関連する問題