NSWindow vs ViewController - OS X - Cocoa

时间:2015-02-07 12:17:59

标签: xcode macos cocoa nswindow nsviewcontroller

我一直在制作iOS应用程序已经有一段时间了,我觉得我也想开始为Mac制作一些这些应用程序。

我的问题是:有没有需要一个NSWindow,现在开发的Mac与iOS非常相似?

所以我使用Xcode创建了一个简单的cocoa应用程序,它带有一个名为" Main"的故事板,就像在iOS上一样。

在该故事板文件中,有一个NSWindow,然后链接到NSViewController。

我可以摆脱那个NSWindow吗?当我尝试将NSViewController设置为"初始控制器"该应用程序仍然正常。那么NSWindow的重点是什么?

此外,什么班级链接到NSWindow?我试图模糊NSWindow的背景,但我无法将代码链接到NSWindow。

对不起我的愚蠢问题,但我对OS X的开发完全不熟悉。

谢谢你的时间,Dan。

2 个答案:

答案 0 :(得分:5)

在一个问题中有很多问题:

  1. 我可以摆脱NSwindow吗?不,你需要一个窗口来显示你的观点。
  2. NSWindow有什么意义?需要NSWindow作为显示视图的窗口,并且您的事件在响应者链中上升。
  3. 与NSWindow有什么关联?很明显是NSWindow课程,但这不是你想知道的。我想你想知道控制NSWindow的代表。这是NSWindowController,但对于MainMenu.xib,它是NSAppDelegate。
  4. 希望这能为您提供所需的答案。在question中给出了在窗口中处理视图的示例。

    请参阅windows programming guide,了解更多详情:

      

    NSWindow类定义管理和协调的对象   Windows应用程序显示在屏幕上。单一的NSWindow   对象最多对应一个屏幕窗口。两个校长   NSWindow对象的功能是提供NSView的区域   对象可以放置并接受和分发到适当的对象   视图,用户通过鼠标操作发起的事件   键盘。

答案 1 :(得分:0)

问题:我可以摆脱NSwindow吗?我还有进一步的评论。在大多数情况下,您需要一个NSWindow来在屏幕上显示视图;但在特殊情况下,单击NSStatusItem时,不会显示弹出视图。 所以我的答案是每当你需要响应窗口事件时,例如min / max,你需要NSWindow作为视图容器。