Я создал раскадровку, в которой в качестве начального контроллера представления используется контроллер окна. Я дал окну имя автосохранения preferencesWindow
. В настройках я отметил [x] Восстанавливаемый и [x] Освобождать при закрытии.
Когда я захожу в меню и нажимаю «Настройки», я загружаю оконный контроллер следующим образом:
let storyboard = NSStoryboard(name: "Preferences", bundle: nil)
let windowController = storyboard.instantiateInitialController() as? NSWindowController
let window = windowController?.window
windowController!.showWindow(self)
Это представит контроллер представления настроек, и когда я перетащу его в другое место и нажму кнопку закрытия, он закроется. Все идет нормально. Однако, когда я снова загружаю окно из меню, оно отображается в исходной позиции, а не в позиции, в которую я последний раз перетаскивал окно. Почему это?
Ответ. Похоже, это ошибка в xCode 7, когда установка имени автоматического сохранения в коде решила ее.
let storyboard = NSStoryboard(name: "Preferences", bundle: nil)
let windowController = storyboard.instantiateInitialController() as? NSWindowController
let window = windowController?.window
window!.setFrameAutosaveName("preferences")
windowController!.showWindow(self)
windowWillClose:
(см. Справочник по протоколу NSWindowDelegate), затем переместите окно, когда оно появится снова. - person Arc676   schedule 14.11.2015