问题标签 [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 回答
31 浏览

objective-c - 如何确保关闭该窗口时所有存在的数据都消失了?

我有一个带有少量源列表项的窗口。在这里,如果您从源列表中选择每个项目,则其视图将加载到该窗口中。该视图将具有其 ViewController 和 modelController。我打开它,一些结果将被填充到其中。对于其他源列表项也是如此。我的问题是如何确保在窗口关闭和重新打开时清除窗口中的数据?

0 投票
1 回答
249 浏览

objective-c - 归档/取消归档 NSWindowController 是否合适?

我很难理解出了什么问题。我有一个带有 NSWindow 和 NSTextView 的 NSWindowController。我想将该 NSWindowControllerNSWindow (连同它的所有控件)归档到一个文件中。

然后,我想取消归档相同的 NSWindowController 和 NSWindow 以及文件中的所有视图。但苹果文档说:

Note: Although the NSWindow class inherits the NSCoding protocol from NSResponder, the class does not support coding. Legacy support for archivers exists but its use is deprecated and may not work. Any attempt to archive or unarchive an NSWindow object using a keyed coding object raises an NSInvalidArgumentException exception.

重要的是,如果我 encodeWithObject:windowController,这不会存储 NSWindow。因此,当我为 windowController 进行 decodeWithObject 时,不会加载 NSWindow。

如何归档/取消归档 NSWindowController / NSWindow 及其所有控件?我错过了什么?

0 投票
3 回答
1313 浏览

objective-c - @property(保留)是否自动释放或释放对象?

下面的超级简单代码让我遇到了完全出乎意料的计时问题。其中一个变量是自动释放的,我不知道为什么。我没有使用 autorelease、KVO 等。它不应该发生。

WindowController设置为@property (retain)'d of MainController

-deallocMainController,我愿意self.windowController = nil;

但是,它一直等到自动释放池被刷新以释放 windowController。我希望在完成后立即调用 WindowController 的 dealloc self.windowController = nil。即使我将 [mainController release] 包装在 NSAutoreleasePool 中,它仍然不会立即释放。

为什么会这样?


对于@property / NSWindowController,这似乎不是正确的行为。我错过了什么吗?


更正:这不是绑定。我正式不知道问题是什么。

主驱动:

主控制器.h:

主控制器.m:

MainWindowControllerSubclass.h:

MainWindowControllerSubclass.m:

0 投票
1 回答
1103 浏览

objective-c - 在各种视图/笔尖之间共享一个用于绑定的对象(特别是一个 NSDocument)

我正在使用 Xcode 4 为 OSX (Lion) 编写应用程序。

用这个和互联网撞到了一点墙,到目前为止,事实证明这并不是特别有用。

我定义了一个文档,以及 MainMenu.xib 和一个文档窗口;文档窗口当然是在加载/创建文档时创建的,因此可以访问相关数据。

我想在这个项目中尽可能多地使用 Cocoa Bindings,所以我的问题是:

如果我创建另一个视图(假设是一个带有链接 Nib 的 NSViewController);我如何允许它访问文档的数据?

我尝试为文档类添加#import,但是当我将文档类上的#import 添加到视图控制器(以创建它)时,这会导致问题——我得到未知类型的编译错误。

我还沿着传递临时对象的路线(甚至在创建视图控制器后访问 getter / setter);肯定有更好,更清洁的方法吗?

该应用程序只有一个 NSWindowController(默认),就是它,它是来自 XCode 非核心数据基于文档的应用程序模板的香草。

谢谢你的帮助,克林特

0 投票
2 回答
319 浏览

objective-c - 将 NSMutableArray 传递给 NSWindowController

所以我正在创建一个像这样的 NSWindowController:

然后我将这个对象传递给我将用于 NSTableView 的数组

一旦创建了该对象,我意识到我不知道如何做一些基本的事情,即链接新创建的对象动作和出口。如果我在 xib 中创建一个对象并链接方法,我可以运行一个操作,但我无权访问数组,因为 xib 创建了一个单独的 NSWindowController 实例,那么如何以编程方式创建 NSWindowController 但是还将一个数组传递给它。

0 投票
2 回答
690 浏览

objective-c - NSMutableArray 作为实例变量

我有一个实例变量,它是 NSMutableArray

NSMutableArray 使用此方法设置(从初始化此对象的对象调用):

NSLog 在该方法运行时显示数组的内容:

但是在我使用这个实例变量的方法中,它似乎不再被初始化

当它到达这一点时,我看到以下 NSLog:

哪个会向我表明 aBuffer 已(自动?)释放?

任何想法为什么会这样做?起初我以为我有两个不同的对象,一个是通过从原始控制器初始化 NSWindowController 创建的:

还有一个是在 nib 加载时创建的,相同但不同的对象,但是我现在不认为是这种情况,因为我不再看到重复的 NSLog,所以我认为它只是 NSMutableArray(s) 的一些基本内存问题?

0 投票
1 回答
605 浏览

macos - 未正确添加子窗口

我正在尝试在 OS X 应用程序的主窗口底部添加一个辅助窗口,希望最终能在按下切换按钮时从窗口下方动画出来。据我所知,使用 SDK 执行此操作的最佳方法是使用- [NSWindow addChildWindow:ordered:]. 但是,当我调用该函数时,虽然显示了辅助窗口,但它并未添加为子窗口。这是我按下按钮时调用的函数:

(我还没有添加代码来关闭它,因为我要确保它首先出现。)

这是控制台的输出:

有谁知道为什么窗口没有被添加为孩子以及我能做些什么来解决这个问题?

一些可能有帮助的额外上下文是,我正在使用图像作为窗口本身和标题栏的背景来绘制自定义窗口。我正在修改的代码可以在http://cocoawithlove.com/2008/12/drawing-custom-window-on-mac-os-x.html找到。

谢谢!

编辑:我尝试覆盖- [NSWindow addChildWindow:ordered:]函数并记录我能找到的任何信息,结果发现窗口本身没有传递给函数。希望这将帮助某人找出问题所在!

0 投票
1 回答
177 浏览

objective-c - 以编程方式打开笔尖时 NSUserDefaults 不起作用

在启动时显示的窗口中,NSUserDefaults 在初始窗口中效果很好。如果我使用此代码以编程方式再次打开相同的 nib 文件:

它无法获得 NSUserDefaults。我得到 的值(null)。我读了这样的默认值:
[[NSUserDefaults standardUserDefaults] valueForKey:@"myKey"];

并像这样写信给他们:
[[NSUserDefaults standardUserDefaults] setValue:@"myValue" forKey:@"myKey"];

我究竟做错了什么?设置好值并重新启动应用程序后,重新打开 prog。加载笔尖窗口失败!

我从NIB文件所连接的类中打开这个以编程方式打开的窗口->用户按下一个按钮,第二个窗口打开!

0 投票
2 回答
2251 浏览

objective-c - Cocoa:在控制器中的 windowDidLoad 中获取窗口

NSWindowController有这个代码:

NSAssert失败。

为什么?

我怎样才能得到窗户?

0 投票
1 回答
2844 浏览

cocoa - Mac OS X showWindow 问题:NSWindow 只出现一次

我有一个仅在必须显示首选项窗口的状态栏中可见的 Mac OS X 程序。我有这个 IBAction:

在 applicationDidFinish Launching 我有:

类头:

问题是:首选项窗口只显示一次。当我关闭它时,它再也不会出现了。

可能是什么问题?