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

xcode - NSWindowController 显示新窗口

我对mac编程很陌生。3天前才开始。
我正在制作一个示例应用程序,其中我在主窗口中有一个按钮
我正在使用此代码打开一个新的 wndowcontroller

这工作正常,但是当我再次按下按钮时,它会再次打开相同的窗口,所以每次点击后我都会在屏幕上显示 +1 窗口。
我想要的是如果我的新窗口已经在我的屏幕上,那么按钮不能添加相同的窗口。

提前致谢:)

0 投票
1 回答
1023 浏览

macos - 在 OSX Lion 的 NSWindowController 中不推荐使用 NSWindow

我有一个子类定义如下,

然后我创建上述子类的实例如下

我试着像这样要求windowmusicBrowserWindowController

但是,这样做时,我收到警告消息,window maybe deprecated because receiver type is unknown.

关于我做错了什么的任何建议?我注意到这个警告信息只出现在 OSX Lion 中。谢谢。

0 投票
1 回答
1113 浏览

macos - 带有 plist 文件的 NSTableView

我对 mac 应用程序开发非常陌生。所以只是做一些实际的练习。

我想创建一个表格视图来显示我的 plist 文件中的数据。
我有一个 windowcontroller 类和 window controller.xib 文件。
我将 NSTableView 拖放到 .xib 文件中。
并使用此代码加载 plist 文件

现在我应该怎么做才能在我的表格视图中显示行?
我必须使用哪种方法?如何??

就像在我们正在使用的 IOS 开发中一样

0 投票
1 回答
979 浏览

cocoa - awakeFromNib 为我的 WindowController 调用了两次,对吗?

有人告诉我 awakeFromNib 应该只调用一次,所以我很惊讶地看到它为我的 WindowController 调用了两次。我使用 IB 在 MainMenu.xib 中创建我的 WindowController,但是为了告诉它要加载哪个窗口 xib 文件,我向它添加了一个 init 方法。

当我调试代码时,我发现这个调用堆栈触发了对 awakeFromNib 的第一次调用。所以基本上 [MyWindowController init] 触发了第一次调用。然后我猜第二个调用是因为加载 MainMenu.xib。那是对的吗 ?

有人可以对此有所了解吗?

顺便说一句,我在堆栈溢出上阅读了一些与我类似的其他问题,一些答案说这可能是因为文件 owen 问题。所以我特别把window xib文件的文件所有者改成了NSApplication。但是 awakeFromNib 仍然为 MyWindowController 调用了两次。

在此处输入图像描述

0 投票
1 回答
178 浏览

cocoa - 切换到另一个窗口时窗口没有释放

我正在创建一个带有一些按钮的主窗口的 Mac 应用程序。

当我单击按钮时,它将打开一个DetailWindow带有 NSTableview 的。每个buttonclickevent 都会改变 NSTableView 中的数据。

这是我的代码:

在我的mainWindow.m文件中

详细窗口中

如果我单击第一个按钮此if([title isEqualToString:@"First"])事件调用,我可以在我的 tableview 中看到前五个图像。

之后,如果我单击第二个按钮,我将看不到表中的下五个图像。数据未更改,因为if ([title isEqualToString:@"Second"])未调用此事件。
如果我首先单击second按钮,那么会发生同样的事情first event

知道为什么吗?我认为当我第二次单击任何按钮时窗口没有释放。

0 投票
1 回答
533 浏览

objective-c - NSWindowController 从未被释放

我有一个NSWindowController子类,在windowWillClose:通知中我将自动释放发送到窗口控制器。但仍然从不调用 dealloc。我在课堂上没有计时器,所以这不是问题。有任何想法吗?

0 投票
2 回答
1586 浏览

macos - 如何在不移动子 NSWindows 的情况下移动 NSWindow

我有一个主窗口,它是我的应用程序的中心。对于不同的功能,我打开一个子窗口来处理某些专门的功能。我希望所有窗口都独立移动,但现在如果我移动原始的中央窗口,那么所有这些子窗口都会随之移动。如何使子窗口断开连接,以免它们与父窗口一起移动?

0 投票
1 回答
804 浏览

cocoa - 将数组控制器初始化从 nib 移动到代码会破坏表视图绑定

  1. 我的窗口控制器子类是笔尖的所有者。
  2. 我在我的文档子类中用代码实例化我的数组控制器。文档和窗口控制器都在代码中使用它。
  3. 我像这样绑定表列:File Owner >> document._arrayController.arrangedObjects.attributeName
  4. 表视图不显示任何行。
  5. 窗口控制器和文档类都不接收-addObserver与表格视图相关的消息。

显然我没有正确绑定到这个数组控制器。我想我缺少一些关于表视图列如何绑定到数组的基本知识。

这个问题是在一些重构过程中出现的。我曾经在 nib 中实例化数组控制器。该文档是文件所有者,并且有一个阵列控制器的出口。绑定看起来像My Array Controller > mappedObjects > attributeName。一切正常。

由于文档通过数组控制器处理插入对象,我认为窗口控制器不应该负责创建它。窗口控制器是新的 nib 所有者,因此我将其从 nib 中删除。我现在在-makeWindowControllers. (我问了这个有关初始化的相关问题。)

在调试这个时,我发现了别的东西。如果窗口控制器是表视图的数据源并且我实现-numberOfRowsInDataSource

表视图调用它,-addObserver为所有列发送消息,并使用绑定实际加载每个单元格的值。但是,当为给定单元格加载值时,它不会加载第 n 个对象的属性值,而是加载整个对象列的arrangedObjects属性值。它将这些数组传递给值转换器(无法正确处理它们)并在文本单元格中显示数组(它们不适合)。description

当窗口控制器是表视图的数据源但列使用绑定时,表视图应该忽略 的结果-numberOfRowsInTableView,或者根本不应该调用它。(响应选择器return 0只是避免了运行时错误。数据源只是首先设置为实现单元格的工具提示。)再一次,当我在 nib 中创建数组控制器时,所有这些都可以正常工作。

一些想法:

  1. 甚至可以使用 IB 将表列绑定到另一个对象拥有的数组控制器吗?
  2. 我是否需要将阵列控制器放回笔尖,并让窗口控制器与文档实例共享它?(这听起来像可怕的设计。)
  3. 我应该有两个数组控制器,一个用于窗口控制器,另一个用于文档?

添加:

我使用表视图数据源和绑定的原因是使用这些方法实现拖放重新排序:

  • tableView:writeRowsWithIndexes:toPasteboard:
  • tableView:validateDrop:proposedRow:proposedDropOperation:
  • tableView:acceptDrop:row:dropOperation:
0 投票
1 回答
250 浏览

objective-c - 使用 NSWindowController 加载 nib 无效

在我的应用程序中,我有首选项窗口。要加载此窗口,我使用此代码

但这没有效果(首选项窗口不打开)。

当我使用 Xcode 4.1 DP1 时,此代码有效。现在我将 Xcode 升级到 4.2 并且代码不起作用。

哪里可能有问题?谢谢!

0 投票
1 回答
268 浏览

objective-c - 无法显示我的 NSWindow

我希望你们能帮助我,通常我不会寻求帮助,但我只是有一段时间遇到这个问题。

我有这个动作应该从我的 XIB 文件创建一个新窗口

并得到了这个结果