问题标签 [nswindowcontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5961 浏览

cocoa - Interface builder中的NSWindowController对象链接

我创建了一个 NSWindow xib 文件,我想在单击另一个窗口中的按钮时打开它。

现在,为了控制 NSWindow 的行为,我从 xib 中的 Library 中拖出一个对象,并将其更改为我在 XCode 中定义的 NSWindowController(即 ListingWindowController)的子类。

同样,我还创建了一个 NSViewController 的子类(即 ListingViewController)来管理 NSWindow 内的 NSView。为此,我将 NSViewController 从 xib 中的库中拖出,并将其类更改为 ListingViewController。

我在IB中连接了我的窗口控制器的窗口和listingVC。

现在要在我的启动(第一个)窗口中单击按钮来调用此窗口,我使用 initWithWindowNibName 像这样创建窗口控制器。

问题是,尽管在 IB 中为即将到来的窗口/视图的视图控制器完成了所有绑定,但即使在新窗口加载后(下面的代码),窗口和 ListingVC 仍然是(null),(null)。

请帮助为什么连接不起作用。我正在努力解决这个问题很长一段时间。

PS:我来自iOS编程背景。所以,我假设 Mac 的窗口/视图控制器的行为类似于 iOS UIViewControllers。

蒂亚..

0 投票
1 回答
1004 浏览

objective-c - NSWindow 设置框架高于屏幕

我需要帮助。我有一个像 Adium 这样带有垂直滑块的应用程序。但我的应用程序会根据内容更改窗口高度。如果屏幕高度小于我的应用程序窗口高度,我的窗口会自动降低高度。

当我尝试对我的窗口使用 setFrame 并将 window.frame.size.height 设置为高于屏幕高度时,什么也没有发生。

那么问题来了:如何将窗框设置为高于屏幕高度?

0 投票
1 回答
2782 浏览

objective-c - Mac OS X Cocoa 单窗口应用架构

我无法理解如何以最佳方式设计应用程序以使单个窗口应用程序在 Mac OS X 中运行。我更喜欢单个文档 - 单个窗口应用程序(我没有编写实用程序应用程序),但不清楚在哪里我应该初始化一个窗口内容吗?

在 iOS 上,我应该为此使用-[UIViewController viewDidLoad]-[UIViewController viewWillAppear:]根视图控制器的方法。

你能告诉我任何教程或解释如何处理 NSDocument - NSDocumentController - NSWindowController - NSViewController 类吗?

感谢您的回答。:-)

0 投票
3 回答
1385 浏览

cocoa - 打开时将所有 NSDocument 窗口置于最前面

在大多数系统中,“打开一个新窗口”的默认行为是它出现在前面。这在 Cocoa 中不会发生,我正在尝试找到“正确”的方法来实现这种标准行为。我尝试过的大多数事情最多只能用于一个窗口。

我需要在启动时打开多个窗口:

  • (N x NSDocuments(每个窗口一个)
  • 1 x 简单的 NSWindowController 打开一个 NIB 文件。

不起作用的事情:

  1. 遍历我要打开的所有 NSDocument,然后打开它们。

怎么了?...只有调用 open 的“最后一个”出现在前面 - 其余的都是隐藏的,不可见的,在屏幕上无处可见,直到您快速切换或使用“窗口”菜单找到它们。

代码:

  1. 在每个窗口打开后手动调用“makeKeyAndOrderFront”

怎么了?没什么不同。但是我能找到获取 NSWindow 实例的唯一方法是如此可怕,它似乎完全错误(但在几个博客和邮件列表帖子中都提到了)

代码:

...我知道我做错了,但我不知道为什么/做什么不同:(。

通常但并非总是有效的东西:

  1. 如上所述,但只使用“showWindow”代替(我从 NSDocument 指南中获取)。

奇怪的是,这有时会奏效......即使这是苹果声称他们在内部调用的确切代码。如果他们在内部调用它,如果我在他们已经这样做之后重新调用它,为什么它的行为会有所不同?

0 投票
1 回答
1387 浏览

cocoa - -[NSWindowController 窗口] NSWindowController 用窗口初始化时保留窗口?

在一个应用程序(OS X 10.6.7)中,我有一个NSWindowController初始化为的子类——即-[NSWindowController initWithWindow:],我已经在代码中创建了窗口;我不是从笔尖加载它。

通常,我在我的NSWindowController子类中使用[self window]. 但在这种情况下,每次我发送[self window]时,窗口都会被保留,所以我最终泄漏了很多。

这是预期的行为吗?目前,我通过将窗口存储在init方法中的实例变量中并且从不发送[self window].

我很确定这不会发生,因为NSWindowController正在尝试加载窗口:-loadWindow不保留窗口并-isWindowLoaded返回YES

0 投票
2 回答
3252 浏览

objective-c - 当窗口关闭时释放一个 NSWindowController

我正在构建一个 Cocoa 应用程序并且有一个关于使用窗口控制器的问题。这个想法是,如果用户从菜单栏中选择 New,则会创建一个 MyWindowController 的实例,它是 NSWindowController 的子类,并显示来自 MyWindow.xib 的新窗口。

我正在处理应用程序委托中的操作。根据我在搜索类似以下内容后所见,可以完成。显示窗口后,我没有任何理由再存储指向窗口控制器的指针,并且由于我分配了它,我还在显示窗口之前自动释放它。

由于窗口很快被释放,窗口将在屏幕上短暂显示然后消失。我找到了一个解决方案,在 -showWindow: 方法中保留窗口控制器,并在收到 windowWillClose 通知后让它自行释放。

有一个更好的方法吗?我已经搜索了 Apple 文档,但没有找到关于使用哪些做法的任何内容。这听起来像是应该涵盖的非常基本的东西,所以也许我只是在使用错误的术语进行搜索。

0 投票
1 回答
215 浏览

objective-c - 在加载的视图中选择一个控件

我有一个关于使用 NSViewController 和在视图之间切换的问题。我有一个 Cocoa 应用程序,其中有一个窗口。窗口的想法是它将一个一个地显示多个视图,其中每个视图都存储在一个单独的 XIB 文件中。每个视图都有一个对应的 NSViewController。我做了一个最小的例子,说明我在做什么,只加载第一个视图。

当窗口被加载时,来自 FirstView.xib 的视图也被加载并且视图显示在窗口中。在这种情况下,加载的视图只有一个文本字段,我希望突出显示文本字段,以便可以直接将输入写入其中,而无需用户单击它,但我不知道该怎么做。加载视图时是否可以选择文本字段?

阅读文档后,我发现我可能想将窗口的 initialFirstResponder 设置为文本字段,但是当文本字段与窗口位于不同的 XIB 文件中时,我找不到如何执行此操作。

0 投票
2 回答
753 浏览

cocoa - 可可发布 nswindowcontroller

我正在从窗口 nib 文件中加载带有控制器的窗口。该窗口启用了“关闭时释放”选项。窗口关闭后如何释放控制器?

谢谢

0 投票
1 回答
3573 浏览

objective-c - 交换视图 - NSWindowController 和 NSViewController(s)

我是 Mac OS 编程的新手。目前我正在尝试创建一个简单的测量应用程序,该应用程序将有一个窗口,顶部有工具栏,底部有适当的视图。单击工具栏中的按钮应导致其下方的视图切换 - 例如单击“连接”按钮将显示连接设置,“测量”将显示来自设备的当前数据。

问题是 - 我不知道如何处理交换视图,也许换句话说 - 我知道但不完全是......我在这里找到了类似的讨论:NSViewController and multiple subviews from a Nib but there is no answer how to create NSWindowController以及如何将其分配给主窗口。因为我想有必要创建 NSWindowController 才能交换视图。如果我错了,请纠正我。

所以我正在创建新项目(这里称为 Sample)并且有 SampleAppDelegate.h 文件,它看起来像:

有一个窗口 ivar,它包含从 MainMenu.xib 创建的唯一一个窗口(我认为)。

那么我应该如何从 SampleAppDelegate 为窗口创建 NSWindowController 呢?

我是否应该只创建我的 WindowController 子类并在函数中 - (void)applicationDidFinishLaunching:(NSNotification *)aNotification of SampleAppDelegate 像这样:

我将非常感谢任何提示和帮助。

马尔钦

0 投票
0 回答
709 浏览

objective-c - NSDocument 窗口控制器和出口实例化

我有一个文档窗口控制器的实例似乎是一个奇怪的问题。我有一个基于文档的应用程序,它具有从makeWindowControllersNSDocument 主类的重写方法初始化的自定义窗口控制器:

主应用程序窗口包含一个 NSTextView 对象,该对象在文件所有者(上述窗口控制器)中具有相应的出口。我有一个通过菜单项调用的操作,应该设置文本视图 textStorage 对象的内容。

现在,当发送者是窗口中的按钮时,该操作按预期工作,但当发送者是菜单项时,该操作不起作用。我希望这是一个实例化问题,但令人费解的是在操作中提供以下行:

根据发送者(界面按钮或菜单项)返回两个不同的窗口控制器实例 ID。在一种情况下(菜单项),NSLog 吐出:

在另一种情况下(按钮):

我究竟做错了什么 ?