如何在我的应用程序中显示NSPanel / NSWindow?

时间:2010-12-29 05:32:28

标签: objective-c xcode macos

所以基本上我已经建立了一个应用程序。我想创建一个NSPanel或NSWindow,当点击一个按钮时,它基本上出现在我的应用程序的右侧。然后在再次单击按钮时自动折叠。

我一直在谷歌搜索,但我觉得我不是在寻找合适的东西。

理想情况下它会像[NSApp beginSheet]一样完全运行,除非它不会控制应用程序,它只是用户可以与之交互的另一个窗口。

我怎样才能开始这个?

谢谢!

2 个答案:

答案 0 :(得分:5)

3年后。

  • 从库中拖动窗口/抽屉组合 这将添加以下之一:A)窗口。 B)抽屉视图C)抽屉控制器
  • 将新的D)Disclosure Triangle Button拖到主窗口
  • 将C)抽屉控制器“切换:”(已接收的操作)绑定到D)显示三角形按钮(发送操作)

如果您想将抽屉添加到现有窗口。

  • 从C)取消绑定A)窗口连接|插座中控制器的“parentWindow”插座。
  • 杀死A)窗口
  • 将你的窗口绑定到C)“parentWindow”Outlet。

宾果。 披露按钮将打开/关闭抽屉

旁注:

抽屉概念与iPhone / iPad UI / UX发生冲突,因为没有任何可以滑入的空间。 在我看来,抽屉很酷。杀手很容易添加。并且窗户的尺寸非常合适。

答案 1 :(得分:3)

听起来你想要一个抽屉(NSDrawer)。抽屉已经不再受大多数应用程序设计师的青睐,但仍然是Mac OSX上Cocoa的官方支持部分。您可以使用抽屉隐藏一堆您不希望一直弄乱主窗口的控件。

在Xcode和标题下搜索“Drawer”,您将看到Drawers guide和DrawerMadness示例代码。您只需很少的代码即可打开和关闭抽屉。

A good pro/con discussion of using drawers

更通用的解决方案是子窗口。它只是一个完全独立的窗口(可能没有标题栏)附加到您的文档或其他窗口(我假设“我的应用程序的权利”在您的问题中意味着“我的窗口右侧”)。请参阅NSWindow addChildWindow的文档:ordered:即使拖动窗口,子窗口仍将保持附加到其父窗口。但是儿童窗户的工作量比抽屉要多得多。