【问题标题】:Is encodeRestorableState() supported in NSWindowController?NSWindowController 是否支持 encodeRestorableState()?
【发布时间】:2018-07-28 23:42:31
【问题描述】:

对于我的生活,我无法弄清楚。我想我尽了一切努力让encodeRestorableState(with:) 方法在我的NSWindowController 子类中被调用,但它没有。

在这上面花了几个小时之后,我想它实际上可能根本不受支持。那么this piece of documentation 是什么意思呢?

请注意,它说要使用该方法,而不是覆盖/实现它。也许这就是我弄错的地方。


更新

进一步挖掘,我发现我在NSWindowController 子类中创建的窗口将其windowController 属性设置为nil。我想这就是窗口不告诉控制器对其状态进行编码的原因。我现在正在弄清楚为什么是nil

【问题讨论】:

    标签: cocoa appkit nswindowcontroller


    【解决方案1】:

    尝试为您的 NSViewController/NSWindowController 子类调用 invalidateRestorableState()。稍后将调用encodeRestorableState(with:)

    【讨论】:

      【解决方案2】:

      终于想通了。基本上,这就是我在AppDelegate 中创建窗口控制器的方式:

      MainWindowController().showWindow(self)
      

      我没有保留对窗口控制器实例的任何引用,并且由于NSWindowwindowController 属性是weak,因此正在释放窗口控制器。这就是导致许多问题的原因,包括这个问题中的问题。我也因此遇到了其他问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-08
        • 1970-01-01
        • 1970-01-01
        • 2021-06-07
        • 2020-04-23
        • 2019-08-28
        • 2015-07-04
        • 2016-07-15
        相关资源
        最近更新 更多