macos - Swift - 是否可以在 MacOS ManuBar 应用程序中的 AppDelegate 类之外构建菜单栏项?

标签 macos swift menu

我一次要做很多事情,有时这让人不知所措。学习如何构建 macOS(带有菜单栏和设置窗口),同时学习 swift,有时尝试将 Objective C 教程改编为 Swift。

我已关注this tutorial帮助我开始使用带有菜单栏的应用程序。我已经让它工作了,但现在我想稍微改进一下。

此示例中的所有菜单设置都位于 AppDelegate 类中。由于我的应用程序中有更多的内容,一个设置窗口,我还必须在其中使用表格,因此我想将菜单相关的内容清理到一个名为 MenuLoader 的负责类。

我将所有菜单构建相关代码从 AppDelegate 移至 MenuLoader,并在 AppDelegate 的 applicationDidFinishLaunching 方法上实例化 MenuLoader。

当我运行代码时,应用程序菜单栏项目似乎在加载时出现,有一些断点,我可以清楚地看到对象存在并具有预期的属性,但随后它就消失了。恐怕我缺少 AppDelegate 用于保持引用的菜单栏关系的一些连接。

所以我的问题是:是否有可能有一个单独的类只处理状态菜单栏,而不是在 AppDelegate 上弄得一团糟?如果您认为这可能是我的实现问题,我会在这里发布一些代码,尽管我不确定它会产生很大的影响。

最佳答案

当然可以有一个单独的类。只要逻辑相同,将代码移动到另一个类中就不会改变功能。

如果某些东西消失了,则可能您没有对该对象持有强引用,因此一旦超出范围,它就会被释放。您可能需要:

 class MyClass {
     var:MyObject! // use this to store the reference to your object

     ...
 }

如果这没有帮助,请发布一些代码。

关于macos - Swift - 是否可以在 MacOS ManuBar 应用程序中的 AppDelegate 类之外构建菜单栏项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26815485/

相关文章:

jquery - 使用 jQuery 和 jdMenu 插件创建多级可滚动菜单

html - 尝试将文本和图像的链接垂直居中

macos - 如何让shell脚本等待pkg完成安装

macos - Mac OS X Lion 上的 Tcl 8.6 安装问题

android - 快速将颜色外包到单独的地方?

swift - 框架内的私有(private) Swift 和 ObjC 依赖项

css - 悬停边框底部时更改文本颜色

objective-c - 从多个线程使用 runModalForWindow 有多危险?

macos - 有适用于 OS X 的 .chm 创建者吗?

ios - 如何在iOS应用程序中像Apple的measurue应用程序一样进行测量?