为 sheet 视图控制器存储 window 大小

Store window size for sheet view controller

有没有什么方法可以在显示为 sheet 的视图控制器的用户默认值中存储 window 大小?我正在使用 sheet 类型的故事板和 segue。

我的研究结果


class SheetController: NSViewController, NSWindowDelegate {

  // MARK: - Interface Builder

  @IBInspectable var autosave: String?

  // MARK: - NSViewController

  override func viewWillAppear() {
    super.viewWillAppear()

    guard let window = self.view.window, let saveName = autosave else {
      return
    }

    window.delegate = self
    // restore window size
    window.setFrameUsingName(saveName)

  }

  // MARK: - NSWindowDelegate

  func windowDidEndLiveResize(notification: NSNotification) {
    guard let saveName = autosave else {
      return
    }
    // save new window size
    self.view.window?.saveFrameUsingName(saveName)
  }

}