以编程方式关闭NSPreferencePane或检测它何时再次加载

时间:2010-05-26 11:43:17

标签: cocoa macos

在我的NSPreferencePane的“mainViewDidLoad”中,我提示用户接受许可和用户拒绝,我想关闭窗口。我希望[NSApplication terminate]可行;它确实!逻辑从代码中的那一点返回,我们回到系统首选项窗格窗口。只是如果用户再次在同一窗口中单击我的pref图标,应用程序再次加载(这次跳过“mainViewDidLoad”)并显示一个裸骨UI(从未以编程方式启动)。

所以,我想我可以做以下事情:

1)找到一种关闭“首选项窗格”窗口的方法。

我试图调用[NSWindow close],但是当窗口关闭时(这个窗口意外关闭...)我得到一个错误,并且每隔一段时间,窗口就不会关闭。这个错误是有道理的,因为它在没有适当信号的情况下关闭了。我很想知道是否有更清洁的退出路径。

2)找到一种方法来实现我的pref窗格再次加载并显示许可证。

使用委托或通知似乎是实现它的好方法,但我是mac / cocoa编程中的完整菜鸟,我不知道它是否/如何工作。我所经历的少数文档对我目前的理解水平来说有点难度。

非常感谢任何可能使我朝着正确方向前进的指针/示例代码/建议。

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以尝试实施the willSelect method而不是mainViewDidLoad

答案 1 :(得分:0)

以编程方式关闭NSPreferencePane意味着关闭系统偏好设置应用程序:

[[NSApplication sharedApplication] terminate:self];