2016-04-19 10 views
0

Ich setze AutoSafe für Fenster in IB. Im Fenstercontroller des Fensters mache ich folgendes -Wie wird die NSWindow-Position für mehrere Bildschirme gespeichert?

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") 
    } 

Dies ist so einfach wie möglich sein kann. Es funktioniert perfekt, wenn ich es auf einem einzigen Bildschirm benutze. Aber wenn ich mehrere Bildschirme verwende, dann ist die anfängliche Fensterposition immer auf dem Hauptbildschirm. Es erinnert sich nicht an den Bildschirm, auf dem App beendet wurde. Ich habe auch versucht (ohne Glück) -

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!) 
     } 
    } 

Wie richtig setFrameUsingName verwenden Methode? Danke für Ihre Hilfe.

Antwort

0

Dies liegt daran, dass alle UIViews in das UIWindow eingebettet sind. Jeder UIView oder "Bildschirm", wie Sie ihn genannt haben, ist eine Unteransicht von UIWindow. Sie können sich UIWindow als übergeordnetes Element einer UIView vorstellen. Wenn Sie nur eine UIView bearbeiten möchten, sollten Sie nur mit dieser UIView arbeiten. Sie können mehr über View and Window Architecture lesen. Sie haben dort ein hilfreiches Diagramm, das Ihnen auch hilft, meine Erklärung zu visualisieren.

+0

Danke für die Antwort. Aber meine Abfrage bezieht sich auf NSWindow und NSView nicht UIWindow oder UIView. – Abhishek

+0

Nicht sicher dann. Möglicherweise möchten Sie Ihre Frage aktualisieren, um die Begriffe NSWindow und NSView einzubeziehen. Wenn Ihre Antwort klar ist, erhalten Sie eher Hilfe von anderen. –