没有@NSApplicationMain的OSX应用程序

时间:2015-08-29 12:48:04

标签: xcode macos swift

所以在这里我试图摆脱@NSApplicationMain来熟悉事情的深入工作。 我在musically_ut OSX application without storyboard or xib files using Swift

找到了这个很好的答案

然而,它不太有用! 这是奇怪的结果:视图没有链接到窗口,此外,窗口不是它应该的位置!

图片可以在http://imgur.com/e4EXnpW

找到

我在没有使用storyboard的情况下启动了xcode项目,然后创建了main.swift,AppDelegate.swift,ViewController.swift,并粘贴了这个人提供的每个内容。然而它不起作用。

有人可以提供可靠的方法来启动OSX应用程序 @NSApplicationMain?

1 个答案:

答案 0 :(得分:2)

看起来您的代码实际上 正在运行,但您需要做一些其他事情才能让它按照您希望的方式运行。您有一个窗口正在从Interface Builder中的MainMenu.xib加载 - 这是一个带有" 911"的窗口。在标题栏中。您已经获得了以编程方式创建的第二个窗口。那是屏幕左下角的窗口。

首先,您的Window文件中仍然显示MainMenu.xib。单击MainMenu.xib,在Interface Builder中打开它时,查看左侧窗格中的项目。我猜测有一个Window图标。你想点击它并删除它。

之后,您只需在左下角有一个窗口。它看起来像一个"视图"由于您尚未配置窗口的styleMask属性,因此未附加到窗口。您可能需要styleMask,如下所示:

let styleMask = NSTitledWindowMask
              | NSClosableWindowMask
              | NSMiniaturizableWindowMask
              | NSResizableWindowMask

你说窗口也不是它应该的位置。我不知道您希望它在哪里,但您可以在初始化时更改contentRect参数来更改其位置和大小。制作一个NSRect,将您的窗口定位和调整到您想要的位置,称之为myRect之类的方便,然后像这样初始化您的窗口(假设您从上面定义了styleMask常量):

newWindow = NSWindow(contentRect: myRect, styleMask: styleMask, backing: NSBackingStoreType.Buffered, defer: false)

应该这样做。对于main.swift的替代版本,请参阅this gist on github