如果NSWindow
即将开启或刚刚开启时,如何注意?也就是说,与windowWillClose:
委托方法相反(同样与NSWindowWillCloseNotification.
相反)
这与this question有关,但与其他方向有关。
背景是,我正在寻找在主菜单上加上一个带有标记的窗口(以及其他内容)。显示窗口时,应检查相应的̨菜单项,反之亦然。
答案 0 :(得分:4)
当窗口何时或如何可见时,通常不应该是一个谜。它应该只发生在你自己的代码正在做的事情上。如果窗口在NIB中并且在启动时标记为Visible,则它会显示代码何时加载该NIB。否则,只有当您拨打除-order...
之外的-orderOut:
方法之一(例如-orderFront:
)或-makeKeyAndOrderFront:
时,才会显示该方法。如果窗口由窗口控制器控制,那么它将显示您是否调用-[NSWindowController showWindow:]
。等
如果您确实需要收到通知,可以继承NSWindow
并覆盖-orderWindow:relativeTo:
,如果orderingMode
不是NSWindowOut
且窗口尚未显示,发布自己的通知。
答案 1 :(得分:1)
通过macOS 10.10,通过调用NSViewController
viewWillAppear
或viewDidAppear
可以解决这个问题。有一个NSViewController
子类并将其设置为窗口的contentViewController
。然后,其viewWillAppear
/ viewDidAppear
实施可以发布窗口将(或确实)打开的通知。
答案 2 :(得分:0)
如果您在IB中执行此操作,则可以将NSMenuItem
值绑定到NSWindow
s visible
绑定零行代码。
可见: 一个布尔值,指定NSWindow是否可见 如果可见评估为YES,则可以看到NSWindow 可用性: 适用于OS X v10.3及更高版本。
有关详细信息,请参阅NSWindow Binding Documentation。
您可以将NSMenuItem
值绑定绑定到现有类中的现有NSWindow
属性,或者将NSObjectController
添加到您的nib并将其内容设置为{{ 1}} instance然后绑定到控制器。
在Mac OS 10.9上经过测试和确认。适用于窗口最小化和恢复。